Форум программистов, компьютерный форум, киберфорум
C#: API, боты
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/64: Рейтинг темы: голосов - 64, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 78
1
Telegram API

Беда с онлайн кнопками

05.05.2020, 14:08. Показов 11708. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый! Ув. форумчане , пожалуйста , помогите разобраться с одной бедой (

Пишу бот для телеграмма , вот его кусок :

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
        private static async void Bot_OnMessage(object sender, MessageEventArgs e)
        {
            String Local_PathToXML = "C:/TeleBot/XML/";
            String Local_PathToXML_Archive = "C:/TeleBot/XML/Archive/Kassa/";
 
            String FileName_For_Kassa = "Kassa.xml";
            String FileName_For_Pricelist = "OldPrice.xml";
            List<String> Array_From_XML = new List<String>();
            var TextReturn = "";
            var text = e?.Message?.Text;
            if (text == null)
            {
                return;
            }
 
            if (text == "/MENU" ||  text == "/start") {
                var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(new[]
        {
              new [] // Первая колонка
             {
               Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData("Касса за сегодня","KASSA"),
 
            },
             new [] // Вторая колонка
             {
               Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData("Касса за сегодня EXCEL","KASSAXLS"),
            },
            new [] // Третья колонка
             {
               Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData("Касса за прошедшие дни","KASSA_ARCHIVE"),
            },
 
            });
                
                await BotClient.SendTextMessageAsync(e.Message.Chat.Id, "Меню :", replyMarkup: keyboard);
 
 
                BotClient.OnCallbackQuery += async (object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
                {
 
                    if (ev.CallbackQuery.Data == "KASSA")
                    {
                        Local_PathToXML = Local_PathToXML + FileName_For_Kassa;
                        Array_From_XML = CheckXML(Local_PathToXML);
                        foreach (string str in Array_From_XML)
                        {
                            TextReturn = str;
                            await BotClient.SendTextMessageAsync(e.Message.Chat, $"{TextReturn} ");
                        }
                        if (TextReturn == "")
                        {
                            TextReturn = "Информация отсутствует , вероятно , произошел сбой";
                            await BotClient.SendTextMessageAsync(e.Message.Chat, $"{TextReturn} ");
                        }
                    }
                    if (ev.CallbackQuery.Data == "KASSAXLS")
                    {
                        try
                        {
                            Stream fs = System.IO.File.OpenRead(@"C:/TeleBot/XLS/КассыПодробно.xls");
                            var document = new Telegram.Bot.Types.InputFiles.InputOnlineFile(fs);
                            document.FileName = "КассыПодробно.xls";
                            await BotClient.SendDocumentAsync(e.Message.Chat, document);
                            fs.Close();
                            TextReturn = "OK";
                        }
                        catch
                        {
                            TextReturn = "Информация отсутствует , вероятно , произошел сбой";
                            await BotClient.SendTextMessageAsync(e.Message.Chat, $"{TextReturn} ");
 
                        }
                    }
                    if (ev.CallbackQuery.Data == "KASSA_ARCHIVE")
                    {
                        TextReturn = "Укажите дату , касса за которую вас интересует в формате KA.01.12 , где 01 - число , а 12 - месяц ";
                        await BotClient.SendTextMessageAsync(e.Message.Chat, $"{TextReturn} ");
 
                    }
 
                    // var rem = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardRemove();
 
                    await BotClient.EditMessageReplyMarkupAsync(ev.CallbackQuery.Message.Chat.Id,
                       ev.CallbackQuery.Message.MessageId, null);
 
                    TextReturn = "Вызвать меню : /MENU";
                    await BotClient.SendTextMessageAsync(e.Message.Chat, $"{TextReturn} ");
 
                };
 
            }
 
            String CommandPrefics = "";
 
            if (text.Length > 4)
            {
                CommandPrefics = text.Substring(0, 3);
            }
 
 
            if (CommandPrefics == "KA.")
            {
 
                try
                {
                    string Date_Kass = text.Substring(3);
                    Local_PathToXML_Archive = Local_PathToXML_Archive + Date_Kass + ".xml";
                    Array_From_XML = CheckXML(Local_PathToXML_Archive);
                    foreach (string str in Array_From_XML)
                    {
                        TextReturn = str;
                        await BotClient.SendTextMessageAsync(e.Message.Chat, $"{TextReturn} ");
                    }
                    if (TextReturn == "")
                    {
                        TextReturn = "Похоже данных за эту дату нет , или вы указали некорректные данные. Выберете этот пунк меню еще раз и попробуйте снова.";
                        await BotClient.SendTextMessageAsync(e.Message.Chat, $"{TextReturn} ");
                    }
 
                }
                catch
                {
 
                }
            }
 
        }
Проблема в том , что когда несколько раз нажимаешь на одну кнопку , результат выводится столько раз , сколько было нажатий по кнопке , т.е. нажимаешь один раз , а бот тебе отправляет 4 файла , потому что до этого я еще 3 раза нажал на эту кнопку.

Пробую решить это таким образом :

C#
1
2
await BotClient.EditMessageReplyMarkupAsync(ev.CallbackQuery.Message.Chat.Id,
                       ev.CallbackQuery.Message.MessageId, null);
первый раз оно изменяет нормально , но дальше вылазит вот такая ошибка :
Код
message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message
и на самом деле , я даже не уверен , что это поможет решить проблему. Возможно , можно как то сбросить этот счетчик ?
Буду очень благодарен за любую помощь !)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2020, 14:08
Ответы с готовыми решениями:

Запрет на смену символьного кода, Беда, такая беда 1с
С первым днем весны..и новыми проблемами.. Суть: Из 1с при импорте приходят категории/товары ...

GridBagLayout и GridLayout - промежутки между кнопками, и между кнопками и окном программы
Новичок, ногами не бейте. Иду по учебнику - сделал калькулятор с помощью GridLayout. Работает вроде...

Мини онлайн бот для накрутки онлайн-времени в игре
Не закрывайте тему))) Мне просто интересно как сделать онлайн бот не накрутчик))) Бот который...

Мини онлайн бот для накрутки онлайн-времени в игре
Я играю в игру сайтовую там раз в 2 часа можно получить монетки. У меня вопрос как сделать...

2
0 / 0 / 0
Регистрация: 25.08.2020
Сообщений: 12
27.03.2021, 21:56 2
Нашел решение?
0
0 / 0 / 0
Регистрация: 14.11.2020
Сообщений: 1
21.09.2021, 23:20 3
Привет, уже несколько дней мучаюсь с такой же проблемой...Ты случайно не нашел решение?
0
21.09.2021, 23:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2021, 23:20
Помогаю со студенческими работами здесь

Новые пункты меню на vk.com (Казино онлайн, Моя Работа, Заработок онлайн) и всплывающая реклама
Помимо этого поверх видео рекламные баннеры, изображения поворачиваются при наведении курсора, при...

Тормозят некоторые онлайн игры, онлайн ТВ через Wi-Fi
Здравствуйте, обьясните пожалуйста почему у меня тормозят онлайн игры через Wi-Fi, а через шнур все...

Создание онлайн игры "Карты онлайн"
Хочу создать онлайн игру - &quot;карты онлайн&quot; , но возникли проблемы с серверной частью. Как это...

Клиент к онлайн игре "Танки Онлайн"
Помогите, пишу облегчённый клиент к онлайн игре &quot;Танки Онлайн&quot; Игра браузерная клиент пишу на...

Вирус создает Вконтакте новые вкладки "моя работа", "заработок онлайн", "казино онлайн"
После запуска файла из интернета для компьютерной игры создался &quot;новый&quot; ярлык для Google Chrome,...

че за беда?
здравствуйте все. извините что может не по теме,но уж помогите чайнику.проблема в том, что даже при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru