Add a /toggle command to toggle group settings

Signed-off-by: Sayan Biswas <sayan@pokurt.me>
This commit is contained in:
Sayan Biswas 2021-10-21 03:05:44 +05:30
parent 93c799fed3
commit 5bb0a9320f
No known key found for this signature in database
GPG Key ID: E1220C019C89B488
2 changed files with 61 additions and 0 deletions

View File

@ -10,11 +10,13 @@ func LoadHandlers(d *ext.Dispatcher) {
helpCMD := handlers.NewCommand(HelpCmd, helpHandler)
getMeCMD := handlers.NewCommand(FetchCmd, fetchHandler)
settingsCMD := handlers.NewCommand(SettingsCmd, settingsHandler)
toggleCMD := handlers.NewCommand("toggle", toggleHandler)
autoBan := handlers.NewMessage(msgFilter, autoBanHandler)
logHandler := handlers.NewMessage(logChatFilter, logChat)
d.AddHandler(startCMD)
d.AddHandler(helpCMD)
d.AddHandler(getMeCMD)
d.AddHandler(toggleCMD)
d.AddHandler(settingsCMD)
d.AddHandler(autoBan)
d.AddHandler(logHandler)

View File

@ -10,6 +10,13 @@ import (
"time"
)
func getUnRecognizedArg() mdparser.WMarkDown {
msg := mdparser.GetBold("Unrecognized arguments\n\n").AppendNormal("Supported args are\n")
msg.AppendMonoThis("bans").AppendItalicThis(" - toggle SpamProtection Bans\n")
msg.AppendMonoThis("detection").AppendItalicThis(" - toggle spam detection")
return msg
}
func settingsHandler(b *gotgbot.Bot, ctx *ext.Context) error {
chat := ctx.EffectiveChat
message := ctx.EffectiveMessage
@ -44,3 +51,55 @@ func settingsHandler(b *gotgbot.Bot, ctx *ext.Context) error {
_, err = message.Reply(b, txt.ToString(), &gotgbot.SendMessageOpts{ParseMode: MarkdownV2})
return helpers.SendError(err, ctx, b)
}
func toggleHandler(b *gotgbot.Bot, ctx *ext.Context) error {
message := ctx.EffectiveMessage
chat := ctx.EffectiveChat
args := ctx.Args()
if chat.Type == PrivateChat {
_, err := message.Reply(b, mdparser.GetItalic("Command only for group").ToString(), &gotgbot.SendMessageOpts{ParseMode: MarkdownV2})
return helpers.SendError(err, ctx, b)
}
data, err := database.GetChat(chat.Id)
if err != nil {
return helpers.SendError(err, ctx, b)
}
if data == nil {
_, err := message.Reply(b, mdparser.GetItalic("No data found").ToString(), &gotgbot.SendMessageOpts{ParseMode: MarkdownV2})
return helpers.SendError(err, ctx, b)
}
if len(args) < 2 {
_, err := message.Reply(b, getUnRecognizedArg().ToString(), &gotgbot.SendMessageOpts{ParseMode: MarkdownV2})
return helpers.SendError(err, ctx, b)
}
arg := args[1]
switch arg {
case "bans":
database.InsertChat(chat.Id, !data.DoesAutoBan(), data.DetectSpam(), data.SpamAction)
if !data.DoesAutoBan() {
_, err := message.Reply(b, mdparser.GetNormal("SpamProtection Bans enabled in ").AppendBold(chat.Title).ToString(),
&gotgbot.SendMessageOpts{ParseMode: MarkdownV2})
return helpers.SendError(err, ctx, b)
} else {
_, err := message.Reply(b, mdparser.GetNormal("SpamProtection Bans disabled in ").AppendBold(chat.Title).ToString(),
&gotgbot.SendMessageOpts{ParseMode: MarkdownV2})
return helpers.SendError(err, ctx, b)
}
case "detection":
database.InsertChat(chat.Id, data.DoesAutoBan(), !data.DetectSpam(), data.SpamAction)
if !data.DetectSpam() {
_, err := message.Reply(b, mdparser.GetNormal("Spam detection enabled in ").AppendBold(chat.Title).ToString(),
&gotgbot.SendMessageOpts{ParseMode: MarkdownV2})
return helpers.SendError(err, ctx, b)
} else {
_, err := message.Reply(b, mdparser.GetNormal("Spam detection disabled in ").AppendBold(chat.Title).ToString(),
&gotgbot.SendMessageOpts{ParseMode: MarkdownV2})
return helpers.SendError(err, ctx, b)
}
default:
_, err := message.Reply(b, getUnRecognizedArg().ToString(),
&gotgbot.SendMessageOpts{ParseMode: MarkdownV2})
return helpers.SendError(err, ctx, b)
}
}