Обработка сообщений пользователя Reply
Пример пользователь пишет любое сообщение, и получает от бота обратную связь.

Для обработки пользовательских сообщений используется атрибут ReplyMenuHandler.
/// <summary>
/// Конструктор.
/// </summary>
/// <param name="botId">Идентификатор бота.</param>
/// <param name="botIds">Идентификаторы ботов.</param>
/// <param name="commandComparison">Как сравнивать команду.</param>
/// <param name="stringComparison">Как сравнивать строку.</param>
/// <param name="commands">Команды.</param>
public ReplyMenuHandlerAttribute(params string[] commands)
public ReplyMenuHandlerAttribute(long botId, params string[] commands)
public ReplyMenuHandlerAttribute(long[] botIds, params string[] commands)
public ReplyMenuHandlerAttribute(CommandComparison commandComparison, params string[] commands)
public ReplyMenuHandlerAttribute(long botId, CommandComparison commandComparison, params string[] commands)
public ReplyMenuHandlerAttribute(long[] botIds, CommandComparison commandComparison, params string[] commands)
public ReplyMenuHandlerAttribute(StringComparison stringComparison, params string[] commands)
public ReplyMenuHandlerAttribute(long botId, StringComparison stringComparison, params string[] commands)
public ReplyMenuHandlerAttribute(long[] botIds, StringComparison stringComparison, params string[] commands)
public ReplyMenuHandlerAttribute(CommandComparison commandComparison, StringComparison stringComparison, params string[] commands)
public ReplyMenuHandlerAttribute(long botId, CommandComparison commandComparison, StringComparison stringComparison, params string[] commands)
public ReplyMenuHandlerAttribute(long[] botIds, CommandComparison commandComparison, StringComparison stringComparison, params string[] commands)
Если вы используете ReplyMenuHandlerAttribute без botId это значит, что он автоматически будет искать PRTelegramBot у которого botId = 0. Параметр CommandComparison отвечает за то, как сравнивать команды, а именно по точному совпадению или по содержанию.
Параметр botId используется если у вас в вашем проекте работает больше 1 бота одновременно. Ниже представлен пример про какой botId идет речь.
var telegram = new PRBotBuilder("").SetBotId(0).Build();
Пример
public class Commands
{
/// <summary>
/// Команда отработает для бота с botId 0.
/// Команда отработает если 'Команда содержит текст' будет содержаться в тексте сообщения.
/// Так же при проверки будет проигнорирован регистр команды.
/// </summary>
[ReplyMenuHandler(CommandComparison.Contains, StringComparison.OrdinalIgnoreCase, "Команда содержит текст")]
public static async Task ReplyExampleOne(ITelegramBotClient botClient, Update update)
{
string msg = nameof(ReplyExampleOne);
await Helpers.Message.Send(botClient, update, msg);
}
/// <summary>
/// Команда отработает для бота с botId 0.
/// Команда отработает если 'Точное совпадение команды' будет точное совпадения текста сообщения за исключением регистра.
/// </summary>
[ReplyMenuHandler("Точное совпадение команды")]
public static async Task ReplyExampleTwo(ITelegramBotClient botClient, Update update)
{
string msg = nameof(ReplyExampleTwo);
await Helpers.Message.Send(botClient, update, msg);
}
/// <summary>
/// Команда отработает для бота с botId 0.
/// Напишите в чате "Пример 1" или "Пример 2".
/// Пример с использованием разных reply команд для работы с 1 функцией.
/// </summary>
[ReplyMenuHandler("Пример 1", "Пример 2")]
public static async Task ExampleReplyMany(ITelegramBotClient botClient, Update update)
{
string msg = nameof(ExampleReplyMany);
await Helpers.Message.Send(botClient, update, msg);
}
/// <summary>
/// Команда отработает для бота с botId 1.
/// Команда отработает при написание в чат "Пример команды для бота id 1".
/// Пример работы с текстом из json файла.
/// </summary>
[ReplyMenuHandler(1, "Пример команды для бота id 1")]
public static async Task ExampleReplyBotIdOne(ITelegramBotClient botClient, Update update)
{
string msg = nameof(ExampleReplyBotIdOne);
await Helpers.Message.Send(botClient, update, msg);
}
/// <summary>
/// Команда отработает для любого бота с любым botid.
/// Команда отработает при написание в чат "Команда для всех ботов".
/// </summary>
[ReplyMenuHandler(-1, "Команда для всех ботов")]
public static async Task ReplyExampleAllBots(ITelegramBotClient botClient, Update update)
{
string msg = nameof(ReplyExampleAllBots);
await Helpers.Message.Send(botClient, update, msg);
}
}
Last updated