Создание команды только для администраторов
namespace ConsoleExample.Attributes
{
internal class AdminOnlyExampleAttribute : Attribute
{
}
}namespace ConsoleExample.Checkers
{
// Обязательно реализовываем интерфейс IInternalCheck.
internal class AdminExampleChecher : IInternalCheck
{
public async Task<InternalCheckResult> Check(IBotContext context, CommandHandler handler)
{
// Из обработчика получаем ссылку на метод.
var method = handler.Command.Method;
// Из методы пытаемся получить наш атрибут.
var adminAttribute = method.GetCustomAttribute<AdminOnlyExampleAttribute>();
if(adminAttribute != null)
{
var userIsAdmin = await context.IsAdmin(update.GetChatId());
if(!userIsAdmin)
await PRTelegramBot.Helpers.Message.Send(context, "Вы не админ!");
// Пользователь админ возращаем результат Passed, что позволяет выполнить метод, иначе выполнение метода будет приостановлено.
return userIsAdmin ? InternalCheckResult.Passed : InternalCheckResult.Custom;
}
return InternalCheckResult.Passed;
}
}
}
Последнее обновление