mirror of
https://github.com/Jetsparrow/jetherald.git
synced 2026-01-20 23:56:08 +03:00
Check for admin in commands
This commit is contained in:
parent
89d5d2b9b5
commit
6fa0b58349
20
JetHerald/Commands/CommandHelper.cs
Normal file
20
JetHerald/Commands/CommandHelper.cs
Normal file
@ -0,0 +1,20 @@
|
||||
using System.Threading.Tasks;
|
||||
using Telegram.Bot;
|
||||
using Telegram.Bot.Types;
|
||||
using Telegram.Bot.Types.Enums;
|
||||
|
||||
namespace JetHerald.Commands
|
||||
{
|
||||
public static class CommandHelper
|
||||
{
|
||||
public static async Task<bool> CheckAdministrator(TelegramBotClient bot, Message msg)
|
||||
{
|
||||
if (msg.Chat.Type != ChatType.Private)
|
||||
{
|
||||
var chatMember = await bot.GetChatMemberAsync(msg.Chat.Id, msg.From.Id);
|
||||
return chatMember.Status is ChatMemberStatus.Administrator or ChatMemberStatus.Creator;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4,7 +4,7 @@ using DSharpPlus.CommandsNext;
|
||||
using DSharpPlus.CommandsNext.Attributes;
|
||||
using MySql.Data.MySqlClient;
|
||||
|
||||
namespace JetHerald
|
||||
namespace JetHerald.Commands
|
||||
{
|
||||
[ModuleLifespan(ModuleLifespan.Transient)]
|
||||
public class DiscordCommands : BaseCommandModule
|
||||
@ -60,6 +60,7 @@ namespace JetHerald
|
||||
|
||||
[Command("list")]
|
||||
[Description("List all subscriptions in this channel.")]
|
||||
[RequireUserPermissions(DSharpPlus.Permissions.ManageGuild)]
|
||||
public async Task ListSubscriptions(CommandContext ctx)
|
||||
{
|
||||
_ = ctx.TriggerTypingAsync();
|
||||
@ -73,6 +74,7 @@ namespace JetHerald
|
||||
|
||||
[Command("subscribe")]
|
||||
[Description("Subscribes to a topic.")]
|
||||
[RequireUserPermissions(DSharpPlus.Permissions.ManageGuild)]
|
||||
public async Task Subscribe(
|
||||
CommandContext ctx,
|
||||
[Description("The read token of the token to subscribe to.")]
|
||||
@ -99,6 +101,7 @@ namespace JetHerald
|
||||
|
||||
[Command("unsubscribe")]
|
||||
[Description("Unsubscribes from a topic.")]
|
||||
[RequireUserPermissions(DSharpPlus.Permissions.ManageGuild)]
|
||||
public async Task Unsubscribe(
|
||||
CommandContext ctx,
|
||||
[Description("The name of the topic to unsubscribe from.")]
|
||||
|
||||
@ -1,20 +1,26 @@
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Telegram.Bot;
|
||||
using Telegram.Bot.Args;
|
||||
|
||||
namespace JetHerald
|
||||
namespace JetHerald.Commands
|
||||
{
|
||||
public class ListCommand : IChatCommand
|
||||
{
|
||||
readonly Db db;
|
||||
readonly TelegramBotClient bot;
|
||||
|
||||
public ListCommand(Db db)
|
||||
public ListCommand(Db db, TelegramBotClient bot)
|
||||
{
|
||||
this.db = db;
|
||||
this.bot = bot;
|
||||
}
|
||||
|
||||
public async Task<string> Execute(CommandString cmd, MessageEventArgs messageEventArgs)
|
||||
{
|
||||
if (!await CommandHelper.CheckAdministrator(bot, messageEventArgs.Message))
|
||||
return null;
|
||||
|
||||
var msg = messageEventArgs.Message;
|
||||
var chatid = msg.Chat.Id;
|
||||
var topics = await db.GetTopicsForChat(NamespacedId.Telegram(chatid));
|
||||
|
||||
@ -1,15 +1,18 @@
|
||||
using System.Threading.Tasks;
|
||||
using Telegram.Bot;
|
||||
using Telegram.Bot.Args;
|
||||
|
||||
namespace JetHerald
|
||||
namespace JetHerald.Commands
|
||||
{
|
||||
public class SubscribeCommand : IChatCommand
|
||||
{
|
||||
readonly Db db;
|
||||
readonly TelegramBotClient bot;
|
||||
|
||||
public SubscribeCommand(Db db)
|
||||
public SubscribeCommand(Db db, TelegramBotClient bot)
|
||||
{
|
||||
this.db = db;
|
||||
this.bot = bot;
|
||||
}
|
||||
|
||||
public async Task<string> Execute(CommandString cmd, MessageEventArgs args)
|
||||
@ -17,6 +20,9 @@ namespace JetHerald
|
||||
if (cmd.Parameters.Length < 1)
|
||||
return null;
|
||||
|
||||
if (!await CommandHelper.CheckAdministrator(bot, args.Message))
|
||||
return null;
|
||||
|
||||
var chat = NamespacedId.Telegram(args.Message.Chat.Id);
|
||||
var token = cmd.Parameters[0];
|
||||
|
||||
|
||||
@ -1,15 +1,18 @@
|
||||
using System.Threading.Tasks;
|
||||
using Telegram.Bot;
|
||||
using Telegram.Bot.Args;
|
||||
|
||||
namespace JetHerald
|
||||
namespace JetHerald.Commands
|
||||
{
|
||||
public class UnsubscribeCommand : IChatCommand
|
||||
{
|
||||
readonly Db db;
|
||||
readonly TelegramBotClient bot;
|
||||
|
||||
public UnsubscribeCommand(Db db)
|
||||
public UnsubscribeCommand(Db db, TelegramBotClient bot)
|
||||
{
|
||||
this.db = db;
|
||||
this.bot = bot;
|
||||
}
|
||||
|
||||
public async Task<string> Execute(CommandString cmd, MessageEventArgs messageEventArgs)
|
||||
@ -17,6 +20,9 @@ namespace JetHerald
|
||||
if (cmd.Parameters.Length < 1)
|
||||
return null;
|
||||
|
||||
if (!await CommandHelper.CheckAdministrator(bot, messageEventArgs.Message))
|
||||
return null;
|
||||
|
||||
var msg = messageEventArgs.Message;
|
||||
var chat = NamespacedId.Telegram(msg.Chat.Id);
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using System.Threading.Tasks;
|
||||
using DSharpPlus;
|
||||
using DSharpPlus.CommandsNext;
|
||||
using JetHerald.Commands;
|
||||
|
||||
namespace JetHerald
|
||||
{
|
||||
|
||||
@ -32,9 +32,9 @@ namespace JetHerald
|
||||
Commands = new ChatCommandRouter(Me.Username, Log);
|
||||
Commands.Add(new CreateTopicCommand(Db), "createtopic");
|
||||
Commands.Add(new DeleteTopicCommand(Db), "deletetopic");
|
||||
Commands.Add(new SubscribeCommand(Db), "subscribe", "sub");
|
||||
Commands.Add(new UnsubscribeCommand(Db), "unsubscribe", "unsub");
|
||||
Commands.Add(new ListCommand(Db), "list");
|
||||
Commands.Add(new SubscribeCommand(Db, TelegramBot), "subscribe", "sub");
|
||||
Commands.Add(new UnsubscribeCommand(Db, TelegramBot), "unsubscribe", "unsub");
|
||||
Commands.Add(new ListCommand(Db, TelegramBot), "list");
|
||||
|
||||
HeartbeatCancellation = new();
|
||||
HeartbeatTask = CheckHeartbeats(HeartbeatCancellation.Token);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user