[英]Visual Studio 2019 does not see such things as .StartReceiving () and others | Telegram-bot
我正在嘗試在 C # 上制作一個簡單的 Telegram 機器人。 我安裝了 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 List<List<KeyboardButton>>
{
new List<KeyboardButton>{ new KeyboardButton { Text = "Sticker"}, new KeyboardButton { Text = "Pic"} },
new List<KeyboardButton>{ new KeyboardButton { Text = "123"}, new KeyboardButton { Text = "456"} }
}
};
}
}
}
}
所以我知道你可能看過很多關於這個的教程,也許這些教程有點過時了,但實際上你處理消息的方式已經發生了很大變化。
讓我展示一下我是如何做到這一點的:
client.StartReceiving(async (bot, update, token) => {
if (update.Message is Message message)
{
await client.SendTextMessageAsync(message.Chat, "hello world!");
}
});
在上面的代碼中,我使用了 lambda 表達式,這在 imo 中更具可讀性。 但是您仍然可以使用您最喜歡的任何方式。
謝謝你的代碼,但我不明白你有新的 Telegram.Bot 17.0 的樣本嗎?
我對 OnMessage、OnCallbackQuery、StartReceiving、StopReceiving 也有問題。
Everythings 與 Telegram.Bot 16.0.2 一起工作,但現在與 17.0 無關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.