/
d.alekseev
/
SmartMenuBot
Обзор
Документация
Войти
/
d.alekseev
/
SmartMenuBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ConsoleBot/TelegramBot/Commands/Implementations/SetLimitsCommand.cs
66 строк
3 KB
d.alekseev
feat: миграция на Telegram.Bot с reply-клавиатурами и меню команд
08 фев 2026, 17:00
08 фев 2026, 17:00
054ee94
Код
Авторство
О чём код?
using Telegram.Bot; using SmartMenuBot.Core.Services.Interfaces; using SmartMenuBot.TelegramBot.Commands.Interfaces; namespace SmartMenuBot.TelegramBot.Commands.Implementations { public class SetLimitsCommand(ITelegramBotClient botClient, IUserService userService, ITaskLimitsManager limitsManager) : IBotCommand { public string CommandText => "/setlimits"; public bool CanExecute(CommandContext context) { string? messageText = context.Update.Message?.Text; return messageText != null && messageText.StartsWith(CommandText, StringComparison.OrdinalIgnoreCase); } public async Task ExecuteAsync(CommandContext context) { var ct = context.CancellationToken; var chatId = context.Update.Message!.Chat.Id; var existingUser = await userService.GetUserAsync(context.Update.Message.From!.Id, ct); if (existingUser == null) { await botClient.SendMessage( chatId, "\nДля использования этой функции необходимо авторизоваться командой /start", replyMarkup: ReplyKeyboards.PreRegistration, cancellationToken: ct ); return; } var args = context.Update.Message.Text! .Replace(CommandText, "", StringComparison.OrdinalIgnoreCase) .Trim() .Split(' ', StringSplitOptions.RemoveEmptyEntries); if (args.Length != 2 || !int.TryParse(args[0], out int count) || !int.TryParse(args[1], out int length)) { await botClient.SendMessage( chatId, "Использование: /setlimits <кол-во задач> <макс. длина задачи>\n" + "Например: /setlimits 5 50", cancellationToken: ct); return; } if (!await limitsManager.TrySetLimitsAsync(count, length, ct)) { await botClient.SendMessage( chatId, "Некорректные значения. Оба параметра должны быть в диапазоне от 1 до 100.", cancellationToken: ct); return; } await botClient.SendMessage( chatId, $"Лимиты установлены: макс. задач: {count}, макс. длина задачи: {length}", cancellationToken: ct); } } }