Started working on sendMsgCmd
Signed-off-by: Ettore Dreucci <ettore.dreucci@gmail.com>
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -27,6 +27,7 @@ _testmain.go
|
|||||||
# ---> VisualStudioCode
|
# ---> VisualStudioCode
|
||||||
.settings
|
.settings
|
||||||
*.code-workspace
|
*.code-workspace
|
||||||
|
.vscode
|
||||||
|
|
||||||
# Redis
|
# Redis
|
||||||
*.rdb
|
*.rdb
|
||||||
|
@@ -309,24 +309,45 @@ func convertUserGroups(groups []userGroup) []string {
|
|||||||
func getGroupName(group userGroup) (string, error) {
|
func getGroupName(group userGroup) (string, error) {
|
||||||
switch group {
|
switch group {
|
||||||
case ugSoprano:
|
case ugSoprano:
|
||||||
return "Soprano", nil
|
return "Soprani", nil
|
||||||
case ugContralto:
|
case ugContralto:
|
||||||
return "Contralto", nil
|
return "Contralti", nil
|
||||||
case ugTenore:
|
case ugTenore:
|
||||||
return "Tenore", nil
|
return "Tenori", nil
|
||||||
case ugBasso:
|
case ugBasso:
|
||||||
return "Basso", nil
|
return "Bassi", nil
|
||||||
case ugCommissario:
|
case ugCommissario:
|
||||||
return "Commissario", nil
|
return "Commissari", nil
|
||||||
case ugReferente:
|
case ugReferente:
|
||||||
return "Referente", nil
|
return "Referenti", nil
|
||||||
case ugPreparatore:
|
case ugPreparatore:
|
||||||
return "Preparatore", nil
|
return "Preparatori", nil
|
||||||
default:
|
default:
|
||||||
return "", ErrGroupInvalid
|
return "", ErrGroupInvalid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getUserGroupFromStr(group string) (userGroup, error) {
|
||||||
|
switch strings.ToLower(group) {
|
||||||
|
case "soprano", "soprani":
|
||||||
|
return ugSoprano, nil
|
||||||
|
case "contralto", "contralti":
|
||||||
|
return ugContralto, nil
|
||||||
|
case "tenore", "tenori":
|
||||||
|
return ugTenore, nil
|
||||||
|
case "basso", "bassi":
|
||||||
|
return ugBasso, nil
|
||||||
|
case "commissario", "commissari", "commissarii":
|
||||||
|
return ugCommissario, nil
|
||||||
|
case "referente", "referenti":
|
||||||
|
return ugReferente, nil
|
||||||
|
case "preparatore", "preparatori":
|
||||||
|
return ugPreparatore, nil
|
||||||
|
default:
|
||||||
|
return -1, ErrGroupInvalid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func getUserDescription(u *tb.User) (string, error) {
|
func getUserDescription(u *tb.User) (string, error) {
|
||||||
userGroups, err := getUserGroups(u.ID)
|
userGroups, err := getUserGroups(u.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
|
"sort"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
tb "gopkg.in/tucnak/telebot.v2"
|
tb "gopkg.in/tucnak/telebot.v2"
|
||||||
@@ -32,6 +33,9 @@ const (
|
|||||||
"\n- \xF0\x9F\x90\xA6 _Piccione viaggiatore_: [Palazzo Ricci, Pisa](https://goo.gl/maps/gMUbV2eqJiL2)" +
|
"\n- \xF0\x9F\x90\xA6 _Piccione viaggiatore_: [Palazzo Ricci, Pisa](https://goo.gl/maps/gMUbV2eqJiL2)" +
|
||||||
"\n- \xF0\x9F\x93\xA7 _Mail_: telebot.corounipi@gmail.com" +
|
"\n- \xF0\x9F\x93\xA7 _Mail_: telebot.corounipi@gmail.com" +
|
||||||
"\n- \xF0\x9F\x93\x82 _GitHub_: https://github.com/Noettore/barandaBot"
|
"\n- \xF0\x9F\x93\x82 _GitHub_: https://github.com/Noettore/barandaBot"
|
||||||
|
sendMsgHowToMsg string = "Per inviare un messaggio ad una sezione invia il comando \n`/sendMsg SEZIONE TESTO_MESSAGGIO` sostituendo `SEZIONE` con il nome della sezione a cui inviare il messaggio e `TESTO_MESSAGGIO` con il testo del messaggio che vuoi recapitare"
|
||||||
|
sendMsgErrMsg string = "Puoi inviare messaggi soltanto alle sezioni cui appartieni"
|
||||||
|
msgReceivedMsg string = "Hai ricevuto questo messaggio perché fai parte di una sezione del Coro UniPi. Se non vuoi piú riceverne fallo presente!"
|
||||||
)
|
)
|
||||||
|
|
||||||
var bot *tb.Bot
|
var bot *tb.Bot
|
||||||
@@ -57,6 +61,13 @@ var (
|
|||||||
ErrInvalidPath = errors.New("path is not valid")
|
ErrInvalidPath = errors.New("path is not valid")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//Dynamic messages
|
||||||
|
var (
|
||||||
|
helpGenericMsg string
|
||||||
|
helpAuthMsg string
|
||||||
|
helpAdminMsg string
|
||||||
|
)
|
||||||
|
|
||||||
func botInit() error {
|
func botInit() error {
|
||||||
token, err := getBotToken()
|
token, err := getBotToken()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -94,6 +105,8 @@ func botInit() error {
|
|||||||
return ErrBotInit
|
return ErrBotInit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setBotDynamicMsg()
|
||||||
|
|
||||||
err = addBotInfo(bot.Me.Username)
|
err = addBotInfo(bot.Me.Username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error: bot %s info couldn't be added: %v", bot.Me.Username, err)
|
log.Printf("Error: bot %s info couldn't be added: %v", bot.Me.Username, err)
|
||||||
@@ -151,15 +164,48 @@ func setBotPoller(upd *tb.Update) bool {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error checking if user is admin: %v", err)
|
log.Printf("Error checking if user is admin: %v", err)
|
||||||
}
|
}
|
||||||
if isAdminCmd && admin == false {
|
if isAdminCmd && !admin {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if isAuthCmd && auth == false {
|
if isAuthCmd && !auth {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setBotDynamicMsg() {
|
||||||
|
cmdArray := make([]string, 0, len(genericCommands))
|
||||||
|
for cmd, desc := range genericCommands {
|
||||||
|
cmdArray = append(cmdArray, cmd+": "+desc+"\n")
|
||||||
|
}
|
||||||
|
sort.Strings(cmdArray)
|
||||||
|
helpGenericMsg += "*Comandi del Bot*\n"
|
||||||
|
for _, cmd := range cmdArray {
|
||||||
|
helpGenericMsg += cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
cmdArray = make([]string, 0, len(authCommands))
|
||||||
|
for cmd, desc := range authCommands {
|
||||||
|
cmdArray = append(cmdArray, cmd+": "+desc+"\n")
|
||||||
|
}
|
||||||
|
sort.Strings(cmdArray)
|
||||||
|
helpAuthMsg += "\n*Comandi Utenti Autenticati*\n"
|
||||||
|
for _, cmd := range cmdArray {
|
||||||
|
helpAuthMsg += cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
cmdArray = make([]string, 0, len(adminCommands))
|
||||||
|
for cmd, desc := range adminCommands {
|
||||||
|
cmdArray = append(cmdArray, cmd+": "+desc+"\n")
|
||||||
|
}
|
||||||
|
sort.Strings(cmdArray)
|
||||||
|
helpAdminMsg += "\n*Comandi Amministratori*\n"
|
||||||
|
for _, cmd := range cmdArray {
|
||||||
|
helpAdminMsg += cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func botStart() error {
|
func botStart() error {
|
||||||
if bot == nil {
|
if bot == nil {
|
||||||
return ErrNilPointer
|
return ErrNilPointer
|
||||||
|
@@ -3,31 +3,30 @@ package main
|
|||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
tb "gopkg.in/tucnak/telebot.v2"
|
tb "gopkg.in/tucnak/telebot.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
var genericCommands = map[string]bool{
|
var genericCommands = map[string]string{
|
||||||
"/start": true,
|
"/start": "Far (ri)partire il bot",
|
||||||
"/stop": true,
|
"/stop": "Fermare il bot",
|
||||||
"/menu": true,
|
"/menu": "Visualizzare il menu principale",
|
||||||
"/userInfo": true,
|
"/userInfo": "Visualizzare le informazioni sul mio utente",
|
||||||
"/config": true,
|
"/botInfo": "Visualizzare le informazioni sul bot",
|
||||||
"/botInfo": true,
|
"/help": "Visualizzare questo menu di aiuto",
|
||||||
"/help": true,
|
"/prossimoEvento": "Visualizzare le informazioni sul prossimo evento del coro",
|
||||||
"/prossimoEvento": true,
|
|
||||||
}
|
}
|
||||||
var authCommands = map[string]bool{
|
var authCommands = map[string]string{
|
||||||
"/prossimaProva": true,
|
"/prossimaProva": "Visualizzare le informazioni sulla prossima prova",
|
||||||
"/prossimaProvaSezione": true,
|
"/prossimaProvaSezione": "Visualizzare le informazioni sulla prossima prova di sezione",
|
||||||
"/prossimaProvaInsieme": true,
|
"/prossimaProvaInsieme": "Visualizzare le informazioni sulla prossima prova d'insieme",
|
||||||
"/ultimaMail": true,
|
"/ultimaMail": "Visualizzare l'ultima mail inviata alla sezione o a tutto il coro",
|
||||||
}
|
}
|
||||||
var adminCommands = map[string]bool{
|
var adminCommands = map[string]string{
|
||||||
"/authUser": true,
|
"/authUser": "Autorizzare un nuovo utente o aggiungerlo a nuovi gruppi",
|
||||||
"/deAuthUser": true,
|
"/deAuthUser": "Deautorizzare un utente o rimuoverlo da alcuni gruppi",
|
||||||
"/addAdmin": true,
|
"/sendMsg": "Inviare un messaggio ad una o piú delle sezioni di appartenenza",
|
||||||
"/delAdmin": true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func startCmd(u *tb.User, newMsg bool) {
|
func startCmd(u *tb.User, newMsg bool) {
|
||||||
@@ -66,10 +65,11 @@ func startCmd(u *tb.User, newMsg bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func stopCmd(u *tb.User) {
|
func stopCmd(u *tb.User, newMsg bool) {
|
||||||
admin, err := isBotAdmin(u.ID)
|
admin, err := isBotAdmin(u.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error checking if user is admin: %v", err)
|
log.Printf("Error checking if user is admin: %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
if admin {
|
if admin {
|
||||||
//img := &tb.Photo{File: tb.FromDisk()}
|
//img := &tb.Photo{File: tb.FromDisk()}
|
||||||
@@ -82,7 +82,7 @@ func stopCmd(u *tb.User) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error starting user: %v", err)
|
log.Printf("Error starting user: %v", err)
|
||||||
}
|
}
|
||||||
err := sendMsgWithSpecificMenu(u, stopMsg, startMenu, false)
|
err := sendMsgWithSpecificMenu(u, stopMsg, startMenu, newMsg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error sending message to stopped user: %v", err)
|
log.Printf("Error sending message to stopped user: %v", err)
|
||||||
}
|
}
|
||||||
@@ -265,3 +265,75 @@ func addUserGroupCmd(userID int, group userGroup, add bool) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func helpCmd(user *tb.User, newMsg bool) {
|
||||||
|
var msg string
|
||||||
|
msg += helpGenericMsg
|
||||||
|
|
||||||
|
isAuth, err := isAuthrizedUser(user.ID)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error checking if user is authorized: %v", err)
|
||||||
|
} else if isAuth {
|
||||||
|
msg += helpAuthMsg
|
||||||
|
}
|
||||||
|
|
||||||
|
isAdmin, err := isBotAdmin(user.ID)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error checking if user is admin: %v", err)
|
||||||
|
} else if isAdmin {
|
||||||
|
msg += helpAdminMsg
|
||||||
|
}
|
||||||
|
|
||||||
|
err = sendMsgWithSpecificMenu(user, msg, backMenu, newMsg)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error sending message to started user: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func sendMsgCmd(sender *tb.User, payload string, newMsg bool) {
|
||||||
|
arg := strings.SplitN(payload, " ", 2)
|
||||||
|
if payload == "" || len(arg) != 2 || arg[1] == "" || arg[1] == " " {
|
||||||
|
err := sendMsgWithMenu(sender, sendMsgHowToMsg, newMsg)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error in sending message: %v", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
group, err := getUserGroupFromStr(arg[0])
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error in parsing the userGroup: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
is, err := isUserInGroup(sender.ID, group)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error checking if sender is in sendTo group: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if is {
|
||||||
|
users, err := getUsersInGroup(group)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error retrieving users in sendTo group: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, userID := range users {
|
||||||
|
user, err := getUserInfo(userID)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error retrieving user info from id: %v", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
groupName, _ := getGroupName(group)
|
||||||
|
msg := "*Messaggio inviato da " + sender.FirstName + " a tutta la sezione " + groupName + "*\n" + arg[1]
|
||||||
|
err = sendMsg(user, msg, true)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error sending msg to user: %v", err)
|
||||||
|
}
|
||||||
|
err = sendMsgWithMenu(user, msgReceivedMsg, true)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = sendMsgWithMenu(sender, sendMsgErrMsg, true)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error sending msg to user: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -12,24 +12,24 @@ func setBotHandlers() error {
|
|||||||
startCmd(m.Sender, true)
|
startCmd(m.Sender, true)
|
||||||
})
|
})
|
||||||
bot.Handle("/stop", func(m *tb.Message) {
|
bot.Handle("/stop", func(m *tb.Message) {
|
||||||
stopCmd(m.Sender)
|
stopCmd(m.Sender, true)
|
||||||
})
|
})
|
||||||
bot.Handle("/menu", func(m *tb.Message) {
|
bot.Handle("/menu", func(m *tb.Message) {
|
||||||
sendMsgWithMenu(m.Sender, menuMsg, true)
|
sendMsgWithMenu(m.Sender, menuMsg, true)
|
||||||
})
|
})
|
||||||
bot.Handle("/userInfo", func(m *tb.Message) {
|
bot.Handle("/userInfo", func(m *tb.Message) {
|
||||||
msg, _ := getUserDescription(m.Sender)
|
msg, _ := getUserDescription(m.Sender)
|
||||||
sendMsgWithSpecificMenu(m.Sender, msg, myInfoMenu, true)
|
sendMsgWithSpecificMenu(m.Sender, msg, backMenu, true)
|
||||||
})
|
})
|
||||||
bot.Handle("/botInfo", func(m *tb.Message) {
|
bot.Handle("/botInfo", func(m *tb.Message) {
|
||||||
sendMsgWithSpecificMenu(m.Sender, contactMsg, botInfoMenu, true)
|
sendMsgWithSpecificMenu(m.Sender, contactMsg, botInfoMenu, true)
|
||||||
})
|
})
|
||||||
bot.Handle("/help", func(m *tb.Message) {
|
bot.Handle("/help", func(m *tb.Message) {
|
||||||
sendMsgWithSpecificMenu(m.Sender, contactMsg, botInfoMenu, true)
|
helpCmd(m.Sender, true)
|
||||||
})
|
})
|
||||||
bot.Handle("/config", func(m *tb.Message) {
|
bot.Handle("/config", func(m *tb.Message) {
|
||||||
msg, _ := getUserDescription(m.Sender)
|
msg, _ := getUserDescription(m.Sender)
|
||||||
sendMsgWithSpecificMenu(m.Sender, msg, myInfoMenu, true)
|
sendMsgWithSpecificMenu(m.Sender, msg, backMenu, true)
|
||||||
})
|
})
|
||||||
bot.Handle("/authUser", func(m *tb.Message) {
|
bot.Handle("/authUser", func(m *tb.Message) {
|
||||||
authUserCmd(m.Sender, m.Payload, true)
|
authUserCmd(m.Sender, m.Payload, true)
|
||||||
@@ -37,6 +37,9 @@ func setBotHandlers() error {
|
|||||||
bot.Handle("/deAuthUser", func(m *tb.Message) {
|
bot.Handle("/deAuthUser", func(m *tb.Message) {
|
||||||
deAuthUserCmd(m.Sender, m.Payload, true)
|
deAuthUserCmd(m.Sender, m.Payload, true)
|
||||||
})
|
})
|
||||||
|
bot.Handle("/sendMsg", func(m *tb.Message) {
|
||||||
|
sendMsgCmd(m.Sender, m.Payload, true)
|
||||||
|
})
|
||||||
|
|
||||||
bot.Handle(tb.OnText, func(m *tb.Message) {
|
bot.Handle(tb.OnText, func(m *tb.Message) {
|
||||||
sendMsgWithMenu(m.Sender, wrongCmdMsg, true)
|
sendMsgWithMenu(m.Sender, wrongCmdMsg, true)
|
||||||
|
@@ -14,7 +14,7 @@ var (
|
|||||||
authInlineMenu [][]tb.InlineButton
|
authInlineMenu [][]tb.InlineButton
|
||||||
genericInlineMenu [][]tb.InlineButton
|
genericInlineMenu [][]tb.InlineButton
|
||||||
startMenu [][]tb.InlineButton
|
startMenu [][]tb.InlineButton
|
||||||
myInfoMenu [][]tb.InlineButton
|
backMenu [][]tb.InlineButton
|
||||||
botInfoMenu [][]tb.InlineButton
|
botInfoMenu [][]tb.InlineButton
|
||||||
authUserMenu [][]tb.InlineButton
|
authUserMenu [][]tb.InlineButton
|
||||||
)
|
)
|
||||||
@@ -40,6 +40,10 @@ var (
|
|||||||
Unique: "user_btn",
|
Unique: "user_btn",
|
||||||
Text: "\xF0\x9F\x91\xA4 My info",
|
Text: "\xF0\x9F\x91\xA4 My info",
|
||||||
}
|
}
|
||||||
|
helpBtn = tb.InlineButton{
|
||||||
|
Unique: "help_btn",
|
||||||
|
Text: "\xF0\x9F\x86\x98 Aiuto",
|
||||||
|
}
|
||||||
authBtn = tb.InlineButton{
|
authBtn = tb.InlineButton{
|
||||||
Unique: "auth_btn",
|
Unique: "auth_btn",
|
||||||
Text: "\xE2\x9C\x85 Autorizza utente",
|
Text: "\xE2\x9C\x85 Autorizza utente",
|
||||||
@@ -107,8 +111,8 @@ func setBotMenus() error {
|
|||||||
superAdminInlineMenu = append(superAdminInlineMenu, []tb.InlineButton{adminBtn, deAdminBtn})
|
superAdminInlineMenu = append(superAdminInlineMenu, []tb.InlineButton{adminBtn, deAdminBtn})
|
||||||
|
|
||||||
startMenu = append(startMenu, []tb.InlineButton{startBtn})
|
startMenu = append(startMenu, []tb.InlineButton{startBtn})
|
||||||
myInfoMenu = append(myInfoMenu, []tb.InlineButton{backBtn})
|
backMenu = append(backMenu, []tb.InlineButton{backBtn})
|
||||||
botInfoMenu = append(botInfoMenu, []tb.InlineButton{stopBtn}, []tb.InlineButton{backBtn})
|
botInfoMenu = append(botInfoMenu, []tb.InlineButton{helpBtn, stopBtn}, []tb.InlineButton{backBtn})
|
||||||
authUserMenu = append(authUserMenu,
|
authUserMenu = append(authUserMenu,
|
||||||
[]tb.InlineButton{authUGSopranoBtn, authUGContraltoBtn},
|
[]tb.InlineButton{authUGSopranoBtn, authUGContraltoBtn},
|
||||||
[]tb.InlineButton{authUGTenoreBtn, authUGBassoBtn},
|
[]tb.InlineButton{authUGTenoreBtn, authUGBassoBtn},
|
||||||
@@ -182,18 +186,22 @@ func setBotCallbacks() error {
|
|||||||
|
|
||||||
bot.Handle(&stopBtn, func(c *tb.Callback) {
|
bot.Handle(&stopBtn, func(c *tb.Callback) {
|
||||||
bot.Respond(c, &tb.CallbackResponse{})
|
bot.Respond(c, &tb.CallbackResponse{})
|
||||||
stopCmd(c.Sender)
|
stopCmd(c.Sender, false)
|
||||||
})
|
})
|
||||||
|
|
||||||
bot.Handle(&userBtn, func(c *tb.Callback) {
|
bot.Handle(&userBtn, func(c *tb.Callback) {
|
||||||
bot.Respond(c, &tb.CallbackResponse{})
|
bot.Respond(c, &tb.CallbackResponse{})
|
||||||
msg, _ := getUserDescription(c.Sender)
|
msg, _ := getUserDescription(c.Sender)
|
||||||
sendMsgWithSpecificMenu(c.Sender, msg, myInfoMenu, false)
|
sendMsgWithSpecificMenu(c.Sender, msg, backMenu, false)
|
||||||
})
|
})
|
||||||
bot.Handle(&infoBtn, func(c *tb.Callback) {
|
bot.Handle(&infoBtn, func(c *tb.Callback) {
|
||||||
bot.Respond(c, &tb.CallbackResponse{})
|
bot.Respond(c, &tb.CallbackResponse{})
|
||||||
sendMsgWithSpecificMenu(c.Sender, contactMsg, botInfoMenu, false)
|
sendMsgWithSpecificMenu(c.Sender, contactMsg, botInfoMenu, false)
|
||||||
})
|
})
|
||||||
|
bot.Handle(&helpBtn, func(c *tb.Callback) {
|
||||||
|
bot.Respond(c, &tb.CallbackResponse{})
|
||||||
|
helpCmd(c.Sender, false)
|
||||||
|
})
|
||||||
bot.Handle(&backBtn, func(c *tb.Callback) {
|
bot.Handle(&backBtn, func(c *tb.Callback) {
|
||||||
bot.Respond(c, &tb.CallbackResponse{})
|
bot.Respond(c, &tb.CallbackResponse{})
|
||||||
sendMsgWithMenu(c.Sender, menuMsg, false)
|
sendMsgWithMenu(c.Sender, menuMsg, false)
|
||||||
@@ -211,7 +219,7 @@ func setBotCallbacks() error {
|
|||||||
})
|
})
|
||||||
bot.Handle(&sendMsgBtn, func(c *tb.Callback) {
|
bot.Handle(&sendMsgBtn, func(c *tb.Callback) {
|
||||||
bot.Respond(c, &tb.CallbackResponse{})
|
bot.Respond(c, &tb.CallbackResponse{})
|
||||||
|
sendMsgWithMenu(c.Sender, sendMsgHowToMsg, false)
|
||||||
})
|
})
|
||||||
bot.Handle(&authUGSopranoBtn, func(c *tb.Callback) {
|
bot.Handle(&authUGSopranoBtn, func(c *tb.Callback) {
|
||||||
groupCallback(c, ugSoprano)
|
groupCallback(c, ugSoprano)
|
||||||
|
18
todo
18
todo
@@ -2,8 +2,22 @@ redis hash per bot (si puó usare la struct tb.Bot come interface?):
|
|||||||
rinnovare info ad ogni start del bot
|
rinnovare info ad ogni start del bot
|
||||||
visualizzare info bot. Tipo?
|
visualizzare info bot. Tipo?
|
||||||
|
|
||||||
SuperAdmin? Menú giá presente
|
|
||||||
|
|
||||||
Controllare stoppedUser anche se comando inviato tramite menu. Dove farlo?
|
Controllare stoppedUser anche se comando inviato tramite menu. Dove farlo?
|
||||||
|
|
||||||
Help command con descrizione divisa per gruppo
|
|
||||||
|
auth e deAuth solo di utenti dei propri gruppi
|
||||||
|
|
||||||
|
SuperAdmin
|
||||||
|
- Menú giá presente
|
||||||
|
- Invio a tutti
|
||||||
|
- auth e deAuth di tutti
|
||||||
|
|
||||||
|
Invio ultima mail a gruppi corretti
|
||||||
|
- Trigger manuale o automatico per check mail?
|
||||||
|
|
||||||
|
Eventi
|
||||||
|
|
||||||
|
/sendMsg solo gruppi di appartenenza
|
||||||
|
- messaggio di conferma con menu. Alert di invio.
|
||||||
|
/searchUser solo gruppi di appartenenza
|
Reference in New Issue
Block a user