Invalid token || C# Telegram-bot
Я решил попробовать написать Телеграм бота. Посмотрел несколько видео уроков. И всё пытался повторить. Только столкнулся с проблемой
System.ArgumentException: 'Invalid format. A valid token looks like "1234567:4TT8bAc8GHUspu3ERYn-KGcvsvGB9u_n4ddy". '
Какая может быть причина данной ошибки?
using System;
using System.Collections.Generic;
using Telegram.Bot;
using Telegram.Bot.Args;
using Telegram.Bot.Types.ReplyMarkups;
namespace Telegram_Bot
{
class Program
{
private static string Token { get; set; } = "токен";
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($"Пришло сообщение с текстом: {msg.Text}");
switch (msg.Text)
{
case "Стикер":
await client.SendStickerAsync(
chatId: msg.Chat.Id,
sticker: "ссылка на стикер",
replyToMessageId: msg.MessageId,
replyMarkup: GetButtons());
break;
case "Картинка":
await client.SendPhotoAsync(
chatId: msg.Chat.Id,
photo: "сслыка на фото",
replyMarkup: GetButtons());
break;
default:
await client.SendTextMessageAsync(msg.Chat.Id, "Выберите команду: ", replyMarkup: GetButtons());
break;
}
}
}
private static IReplyMarkup GetButtons()
{
return new ReplyKeyboardMarkup
{
Keyboard = new List<List<KeyboardButton>>
{
new List<KeyboardButton>{ new KeyboardButton { Text = "Стикер"}, new KeyboardButton { Text = "Картинка"} },
new List<KeyboardButton>{ new KeyboardButton { Text = "123"}, new KeyboardButton { Text = "456"} }
}
};
}
}
}
Ответы (3 шт):
У меня такая же проблема. Я использую библиотеку Telegram.Bot, проблема в том, что Ваш идентификатор пользователя не входит в Int32. А в данной библиотеке видимо еще не поменяли данный момент.
Предлагаю вам поменять взять 16 версию библиотеки.
просто поменяй версию на 16.0.2 тогда всё будет работать(у меня проблема была такая же)
Кстати, в версии Telegram.Bot 18.0.0 нужно писать код немного по другому...
private static IReplyMarkup GetButtons()
{
//return new ReplyKeyboardMarkup // прошлая версия Telegram.Bot
return new ReplyKeyboardMarkup(new KeyboardButton(null))
{
Keyboard = new List<List<KeyboardButton>>
{
//new List<KeyboardButton>{ new KeyboardButton { Text = "Стикер"}, new KeyboardButton { Text = "Картинка"} }, // прошлая версия Telegram.Bot
new List<KeyboardButton>{ new KeyboardButton("Стикер"), new KeyboardButton("Картинка") },
//new List<KeyboardButton>{ new KeyboardButton { Text = "123"}, new KeyboardButton { Text = "456"} } // прошлая версия Telegram.Bot
new List<KeyboardButton>{ new KeyboardButton("123"), new KeyboardButton("456") }
},
// доп. опции клавиатуры
ResizeKeyboard = true,
OneTimeKeyboard = false,
Selective = false
};
}
П.С. Сам долго мучился, пришел к такому варианту, скидываю код, вдруг кому будет информация полезна!
Ну или ещё проще, без опций как у вас
private static IReplyMarkup GetButtons()
{
ReplyKeyboardMarkup rkm = new ReplyKeyboardMarkup(new KeyboardButton(null));
rkm.Keyboard = new KeyboardButton[][]{ new KeyboardButton[]{("Стикер"), ("Картинка") },
new KeyboardButton[]{("123"), ("456") }};
return rkm;
}