#c# #telegram-bot
#c# #telegram-бот
Вопрос:
Я пытаюсь создать простого телеграмм-бота на C #. Я установил пакеты NuGet, такие как Telegram.Bot
и Telegram.Bot.Extensions.Polling
. Я также посмотрел несколько видеоуроков.
Однако у меня есть ошибки с .StartReceiving()
, .StopReceiving()
, .OnMessage
, MessageEventArgs.
, ReplyKeyboardMarkup
и KeyboardButton
.
И я не знаю причины этого
using System; using System.Collections.Generic; using Telegram.Bot; using Telegram.Bot.Args; using Telegram.Bot.Types.ReplyMarkups; using Telegram.Bot.Exceptions; using Telegram.Bot.Extensions.Polling; namespace TelegramBot { class Program { private static string Token { get; set; } = "My token"; private static TelegramBotClient client; static void Main(string[] args) { client = new TelegramBotClient(Token); client.StartReceiving(); client.OnMessage = OnMessageHandler; Console.ReadLine(); client.StopReceiving(); } private static async void OnMessageHandler(object sender, MessageEventArgs e) { var msg = e.Message; if (msg.Text != null) { Console.WriteLine($"Received a message with the text: {msg.Text}"); switch (msg.Text) { case "Sticke": await client.SendStickerAsync( chatId: msg.Chat.Id, sticker: "Link for a sticker", replyToMessageId: msg.MessageId, replyMarkup: GetButtons()); break; case "Sticker": await client.SendPhotoAsync( chatId: msg.Chat.Id, photo: "Link for a pic", replyMarkup: GetButtons()); break; default: await client.SendTextMessageAsync(msg.Chat.Id, "select a command: ", replyMarkup: GetButtons()); break; } } } private static IReplyMarkup GetButtons() { return new ReplyKeyboardMarkup { Keyboard = new Listlt;Listlt;KeyboardButtongt;gt; { new Listlt;KeyboardButtongt;{ new KeyboardButton { Text = "Sticker"}, new KeyboardButton { Text = "Pic"} }, new Listlt;KeyboardButtongt;{ new KeyboardButton { Text = "123"}, new KeyboardButton { Text = "456"} } } }; } } } }
Комментарии:
1. Какие именно ошибки вы получаете? Что-то вроде: «TelegramBotClient» не содержит определения для «Остановки получения»?
Ответ №1:
Поэтому я знаю, что вы, вероятно, смотрели много учебных пособий по этому вопросу, и, возможно, они немного устарели, но на самом деле то, как вы обрабатываете сообщения, немного изменилось.
Позвольте мне показать, как я это делаю:
client.StartReceiving(async (bot, update, token) =gt; { if (update.Message is Message message) { await client.SendTextMessageAsync(message.Chat, "hello world!"); } });
В приведенном выше коде я использовал лямбда-выражение, которое гораздо более читаемо имо. Но вы все равно можете использовать любой способ, который вам больше нравится.