Форум программистов, компьютерный форум, киберфорум
C#: API, боты
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Отправка сообщения друзьям https://www.cyberforum.ru/ csharp-api/ thread2686295.html
Хочу отправить сообщение друзьям, но не могу понять какую функцию использовать ? В документации вк про это ничего нет а в интернете устаревшая информация ( устаревшие методы которые удалены вк) ...
C# Парсер с использованием Selenium, phantomJS
Доброго времени суток. Подскажите, пожалуйста по следующему вопросу: есть сайт (https://www.sofascore.com/ru), я хочу получить с него некоторую информацию. Использую C# вместе с Selenium, phantomJS....
C# API FSSP.GOV.ru разные ответы
Добрый! Есть некая возможность получать информацию о Производственных делах через API через fssp.gov.ru по порядку: 1. Создаём TASK с ФИО, регионом и др. данными при наличии Отработало...
C# Проблема с отправкой команд бота Мой бот начинает флудить команду hello каждую минуту, не понимаю в чем проблема. Я только начинаю пробовать создавать свои проекты на языке c#, так что не судите строго. Ниже прописанные классы для... https://www.cyberforum.ru/ csharp-api/ thread2684793.html
C# Не удалось создать защищенный канал SSL/TLS https://www.cyberforum.ru/ csharp-api/ thread2684684.html
пишу бота, при отправки сообщения ловлю ошибку System.Net.WebException: Запрос был прерван: Не удалось создать защищенный канал SSL/TLS. код: ServicePointManager.SecurityProtocol =...
API. Корректная маршрутизация через аттрибуты C#
Делаю АПИ по rest. Есть Юзеры и их Роли Есть запросы: Получить все роли Юзера Получить всех Юзеров с ролью 1. В каких контроллерах надо располагать эти методы? 2. Как правильно именовать?...
C# API переводчик
всем привет, решил слепить небольшую утилиту, чтобы удобнее было учить инглиш. помню натыкался на яндекс апи бесплатное и рабочее. теперь онопохоже загнулось. может есть что-то бесплатное похожее,...
C# POST запрос к API Мне необходимо отправить Post-запрос к одной API. В документации приведён пример запроса - http://_сайтAPI_/api/0/orders/add?access_token={​ accessToken​ }&request_timeout={​ requestTimeout​ } НО! В... https://www.cyberforum.ru/ csharp-api/ thread2682630.html
C# Получить ответ от бота https://www.cyberforum.ru/ csharp-api/ thread2681928.html
помогите пожалуйста, решил переписать бота чтоб взаимодействовал с юзером через кнопки. кнопки создались, но как ловить ответ что пользователь нажал? вот код private static async...
C# Как отправлять в определённый канал сообщения? Как отправлять сообщения в определённый канал например я пишу команду в одном чате а текст отправляется в другом https://www.cyberforum.ru/ csharp-api/ thread2681908.html
0 / 0 / 0
Регистрация: 02.05.2019
Сообщений: 13
0
Telegram API

Не работает callback от inline кнопок

04.08.2020, 22:41. Просмотров 1852. Ответов 3
Метки (Все метки)


Привет всем, пишу бота для себя на c#.
И возникла проблема в том что, бот не реагирует на клики по инлайн кнопках.
вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
using Microsoft.VisualBasic;
using System;
using Telegram.Bot;
using Telegram.Bot.Args;
using Telegram.Bot.Types;
using System.Threading.Tasks;
using System.Net.Http.Headers;
using Microsoft.Office.Interop.Excel;
using MongoDB.Bson;
using MongoDB.Driver;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Telegram.Bot.Types.ReplyMarkups;
using System.Security.Cryptography.X509Certificates;
 
namespace telegrambot
{
 
 
    class Program
    {
        const string TOKEN = "1392388848:AAHknB_p5jHykuloQQfQ_KfTh14TY8AFr7Q";
 
 
        public static void Main(string[] args)
        {
 
            while (true)
            {
                try
                {
                    Kurka().Wait();
                   ;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error" + ex);
                }
 
            }
        }
        static async Task Kurka()
        {
            TelegramBotClient bot = new TelegramBotClient(TOKEN);
            bot.OnCallbackQuery += async (object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
            {
                var message = ev.CallbackQuery.Message;
                if (ev.CallbackQuery.Data == "callback1")
                {
                    await bot.SendTextMessageAsync(message.Chat.Id, "тест1", replyToMessageId: message.MessageId);
                    await bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "частики" на кнопке
                }
                else
                if (ev.CallbackQuery.Data == "callback2")
                {
                    await bot.SendTextMessageAsync(message.Chat.Id, "тест2", replyToMessageId: message.MessageId);
                    await bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "частики" на кнопке
                }
                else
                    if (ev.CallbackQuery.Data == "callback3")
                {
                    await bot.SendTextMessageAsync(message.Chat.Id, "тест3", replyToMessageId: message.MessageId);
                    await bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "частики" на кнопке
                }
            };
            int offset = 0;
            int timeout = 2;
            try
            {
                await bot.SetWebhookAsync("");
                while (true)
                {
                    var updates = await bot.GetUpdatesAsync(offset, timeout);
                    foreach (var update in updates)
                    {
                        var message = update.Message;
                     
                        if (message.Text.ToLower() == "розклад")
                        {
                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                            {
                                Keyboard = new[] {
                                                new[] // row 1
                                                {
                                                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton ("1"),
                                                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton ("2")
                                                },
                                                 new[] // row 2
                                                {
                                                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton ("3"),
                                                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton ("4")
                                                },
                                            },
                                ResizeKeyboard = true
                            };
 
 
                            await bot.SendTextMessageAsync(message.Chat.Id, "курс?", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboard);
 
                        }
                        // обработка reply кнопок
                        if (message.Text.ToLower() == "1")
 
                        {
                            var deny = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardRemove();
                            await bot.SendTextMessageAsync(message.Chat.Id, "Прийнято", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, replyToMessageId: message.MessageId, deny);
                            var keyboard = new InlineKeyboardMarkup(new[]
                                        {new [] {
                                                  InlineKeyboardButton.WithCallbackData( "Текст для первой кнопки","callback1"),
                                                  InlineKeyboardButton.WithCallbackData("Текст второй кнопки","callback2"),
                                                  InlineKeyboardButton.WithCallbackData("Текст третей кнопки","callback3"),
                                                 },
                                       });
 
                            await bot.SendTextMessageAsync(message.Chat.Id, "Виберіть спеціальність", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboard);
 
                        }
                        if (message.Text.ToLower() == "2")
                        {
                            var deny = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardRemove();
                            await bot.SendTextMessageAsync(message.Chat.Id, "Прийнято", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, replyToMessageId: message.MessageId, deny);
                            var keyboard = new InlineKeyboardMarkup(new[]
                                        {new [] {
                                                  InlineKeyboardButton.WithCallbackData( "Текст для первой кнопки","callback3"),
                                                  InlineKeyboardButton.WithCallbackData("Текст второй кнопки","callback2"),
                                                 },
                                       });
 
                            await bot.SendTextMessageAsync(message.Chat.Id, "Виберіть спеціальність", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboard);
 
                        }
                        offset = update.Id + 1;
                    }
               
 
 
                }
 
 
            }
            catch (Telegram.Bot.Exceptions.ApiRequestException ex)
            {
                Console.WriteLine(ex.Message); 
            }
        }
 
 
 
        }
 
 
 
}
Прошу сразу прощения, я только учусь.
Буду благодарен за любой совет.

Вернуться к обсуждению:
Не работает callback от inline кнопок
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.08.2020, 22:41
Готовые ответы и решения:

Не работает обработка Inline кнопок в боте Telegram
Собственно сам вопрос в заголовке. Создаю кнопку так: await...

callback функции не для кнопок на экране, а для клавиш на клав. и мышке. Как?
Я так понимаю, что в WIN API все действия делаются асинхронно через callback функции. Но как...

GCC Inline Assembly перевести в Visual Studio Inline Assembler
Здравствуйте. Есть код на GCC Inline Assembly и его нужно перевести в Visual Studio Inline...

For_each и аргументы callback-функции; Как передать callback'у больше одного аргумента
Изучаю контейнеры и алгоритмы stl по Майерсу . С непривычки слегка охренел и запутался в них . В...

3
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.