Добавление и удаление команд в динамическом режиме
Начиная с версии 0.5.0 появилась возможность добавлять динамически команды обработчики для типа reply, slash и inline
Создание новых команд
Пример создания нового метода обработки в коде
var method = async (IBotContext context) =>
{
string message = "Сообщение";
PRTelegramBot.Helpers.Message.Send(context, message);
};После создания метода нужно обратиться к экземпляру класса бота и добавить только что созданный метод с названием команды которая будет задействована.
Внимание: название команд должно быть уникальным!
Пример для Reply обработчика
bot.Register.AddReplyCommand("Название команды", method);Пример для Slash обработчика
bot.Register.AddSlashCommand("/Название команды", method);Пример для Inline обработчика
bot.Register.AddInlineCommand(Enum.value, method);Важно чтобы Enum был типа int, и чтобы значение были уникальны. Рекомендуется использовать значение команд не ниже 100, потому что начиная с 0 уже есть зарегистрированные команды.
/// <summary>
/// Идентификаторы для callback команд
/// </summary>
[InlineCommand]
public enum THeader
{
[Description(nameof(None))]
None = 0,
[Description(nameof(PickMonth))]
PickMonth = 1,
[Description(nameof(PickYear))]
PickYear = 2,
[Description(nameof(ChangeTo))]
ChangeTo = 3,
[Description(nameof(YearMonthPicker))]
YearMonthPicker = 4,
[Description(nameof(PickDate))]
PickDate = 5,
[Description(nameof(NextPage))]
NextPage = 6,
[Description(nameof(CurrentPage))]
CurrentPage = 7 ,
[Description(nameof(PreviousPage))]
PreviousPage = 8,
}Пример с уникальными значениями. Здесь видно что используются 2 разных перечисления, но int значения не пересекаются.
В первом enum значение
500
501
502
503
504
и т.д.
Во втором enum
600
601
602
603
и т.д.
Плохой пример
В данном примере видно, что enum значения будут пересекаться, где-то несколько раз 500, где-то 501. Чтобы система команд работала стабильно и правильно все значения должны быть уникальны!
Все методы возвращают true или false True - команда добавлена False - ошибка при добавление команды
Удаление команд
Пример для Reply
Пример для Slash
Пример для Inline
Данные методы возвращают true или false True - команда удалена False - ошибка при удаление команды
Last updated