我正在尝试不在控制台应用程序中而是在窗口窗体中编写电报机器人。遇到了问题。我希望机器人的各种操作显示在表单上,特别是在 RichTextBox 中。但这样做是不可能的,所以动作发生在静态异步方法中。在这种情况下正确的做法是什么?请不要踢太多 - 我是初学者,了解不多。
namespace TelegramBotTest
{
public partial class Form1 : Form
{
private static ITelegramBotClient bot = new TelegramBotClient("TOKEN");
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var cts = new CancellationTokenSource();
var cancellationToken = cts.Token;
var receiverOptions = new ReceiverOptions
{
AllowedUpdates = { }, // receive all update types
};
bot.StartReceiving(
HandleUpdateAsync,
HandleErrorAsync,
receiverOptions,
cancellationToken
);
WriteToRichBox(DateTime.Now + ": запущен бот " + bot.GetMeAsync().Result.FirstName);
}
private static void WriteToRichBox(string s)
{
richTextBox.AppendText(s + "\n"); //Здесь ошибка "Для нестатического поля, метода или свойства требуется ссылка на объект"
}
public static async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
{
string st = Newtonsoft.Json.JsonConvert.SerializeObject(update);
WriteToRichBox(st));
if (update.Type == Telegram.Bot.Types.Enums.UpdateType.Message)
{
// Некоторые действия
}
}
public static async Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken)
{
// Некоторые действия
WriteToRichBox(Newtonsoft.Json.JsonConvert.SerializeObject(exception));
}
}
}