Как вызвать inline button для бота? Не появляется кнопка, в чём может быть причина? Пишу на C#
Вот код классов InlineKeyboard и InlineKeyboardButton:
public class InlineKeyboard
{
public List<List<InlineKeyboardButton>> inline_keyboard { get; set; }
public InlineKeyboard(List<List<InlineKeyboardButton>> inlineKeyboard)
{
inline_keyboard = inlineKeyboard;
}
}
public class InlineKeyboardButton
{
public string text { get; set; }
//public string url { get; set; }
public string callback_data { get; set; }
public InlineKeyboardButton(string _text, string _callback_data = "")
{
text = _text;
callback_data = _callback_data == "" ? _text : _callback_data;
}
}
А здесь методы которые используются для работы:
{
InitializeComponent();
Init();
}
private void Init()
{
client = new WebClient();
//InitProxy();
timerUpdates.Enabled = true;
}
//private void InitProxy()
//{
// WebProxy proxy = new WebProxy();
// proxy.Credentials = new NetworkCredential();
// client.Proxy = proxy;
//}
private void timerUpdates_Tick(object sender, System.EventArgs e)
{
GetUpdate();
}
/// <summary>
/// Процедура получения обновления.
/// </summary>
private void GetUpdate()
{
string address = BaseUrl + token + "/getUpdates?offset=" + (LastUpdateID + 1);
string data = client.DownloadString(address);
TeleMessage newMessage = JsonConvert.DeserializeObject<TeleMessage>(data);
if (!newMessage.ok || newMessage.result.Length == 0) return;
foreach (Result item in newMessage.result)
{
LastUpdateID = item.update_id;
WriteLog(item.message.text);
SendAnswer(item.message.chat.id, item.message.text);
}
}
private void WriteLog(string text)
{
textBoxLog.Text += DateTime.Now + " " + text + Environment.NewLine;
}
private void SendAnswer(long chat_id, string message)
{
string answer = "";
switch (message.ToLower())
{
case "/start":
answer = "Я вас категорически приветствую. Есть вопросы? - Пиши сюда: /help";
break;
case "/help":
answer = "чем тебе помочь?";
break;
case "menu2":
InlineMenu(chat_id); return;
case "/menu":
MyMenu(chat_id); return;
default:
answer = "Выражайся понятно пожалуйста, внатуре!";
break;
}
SendMessage(chat_id, answer);
}
private void SendMessage(long chat_id, string message, string replyMarkup = "")
{
string address = BaseUrl + token + "/sendMessage";
NameValueCollection nvc = new NameValueCollection();
nvc.Add("chat_id", chat_id.ToString());
nvc.Add("text", message);
if (replyMarkup != "")
nvc.Add("replyMarkup", replyMarkup);
client.UploadValues(address, nvc);
}
private void MyMenu(long chat_id)
{
string address = BaseUrl + token + "/sendMessage";
NameValueCollection nvc = new NameValueCollection();
nvc.Add("chat_id", chat_id.ToString());
nvc.Add("text", "check menu");
//List<string> keyboardButton1 = new List<string>()
//{
// "/start",
// "/help"
//};
List<List<string>> keyboard7 = new List<List<string>>();
DateTimeFormatInfo fi = new DateTimeFormatInfo();
for (int i = 1; i <= 12; i++)
{
List<string> keyboardButton7 = new List<string>()
{
fi.GetMonthName(i)
};
keyboard7.Add(keyboardButton7);
}
//TeleButtons buttons = new TeleButtons(keyboard7);
RemoveButtons r_buttons = new RemoveButtons();
string replyMarkup = JsonConvert.SerializeObject(r_buttons);
nvc.Add("reply_markup", replyMarkup);
client.UploadValues(address, nvc);
}
private void InlineMenu(long chat_id)
{
InlineKeyboardButton key1 = new InlineKeyboardButton("url_1", "google.com");
InlineKeyboardButton key2 = new InlineKeyboardButton("url_2", "nice-host.com");
List<InlineKeyboardButton> keyboardButtons = new List<InlineKeyboardButton>()
{
key1,
key2
};
List<List<InlineKeyboardButton>> keyboard = new List<List<InlineKeyboardButton>>() { keyboardButtons };
InlineKeyboard buttons = new InlineKeyboard(keyboard);
string replyMarkup = JsonConvert.SerializeObject(buttons);
SendMessage(chat_id, "inline menu", replyMarkup);
}
При отправке боту сообщения 'menu2' должно появляться сообщение inline menu с двумя кнопками, но появляется только сообщение. В чём может быть проблема? Может подскажете хороший курс для написания бота. Спасибо за терпимость к ошибкам. Буду благодарен за конструктивную критику и полезные советы.