|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||||||
Как реализовать ввод пользователя в Telegram Bot`e в разветвлении Switch?14.11.2019, 14:40. Показов 18208. Ответов 89
Метки telegram bot (Все метки)
Здравствуйте! Пишу телеграм бота. Столкнулся со следующей проблемой:
Команды пользователя обрабатываю с помощью Swich Case. Понадобилось сдлеать разветвление. Когда пользователь выбирает команду "/Teachers" то бот просит его ввести Фамилию преподавателя, и выдаёт инфу о нём, а если такой фамилии нету, то выскакивает исключение.
0
|
||||||
| 14.11.2019, 14:40 | |
|
Ответы с готовыми решениями:
89
Telegram.Bot Как используя бота пригласить пользователя в приват канал? Как сделать так, чтобы Telegram bot работал для каждого пользователя отдельно? Ожидание ответа от пользователя telegram bot |
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
|
| 15.11.2019, 14:31 | |
|
DragonBorn88, не совсем.
оно никогда не будет выполнено потому , что переход к этому условию возможен только когда в e.Message находится /Teachers , в то время как само условие требует иного значения. - получаем логическое противоречие двух условий. что нужно сделать , что бы это условие выполнилось ?
0
|
|
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||
| 15.11.2019, 14:37 [ТС] | ||
|
0
|
||
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
||
| 15.11.2019, 14:44 | ||
|
И пока функция обрабатывается , он никак не изменится с "/Teachers" на "Бассараб". , только на следующем вызове. Т.е когда у Вас выполняется условие case "/Teachers": , то в следующей строчке переменная e.Message не изменит своего значения волшебным образом , с "/Teachers" на "Бассараб" , что бы удовлетворить условию if (e.Message.Text.Split(' ').First() == "Басараб"). Сам по себе вызов функции await botClient.SendChatActionAsync(e.Message. Chat.Id, ChatAction.UploadPhoto); никак не изменяет значение e.Message , она лишь отправляет сообщение в чат юзеру. Что бы e.Message изменилось , пользователь должен написать новое сообщение в чат боту , после чего у Вас сработает функция Bot_OnMessage , в которой уже e.Message будет равен "Бассараб"
0
|
||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
|
| 15.11.2019, 14:48 [ТС] | |
|
0
|
|
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
|||||||||||
| 15.11.2019, 14:51 | |||||||||||
|
Вы понимаете как работают условия в c# ?
замените свой swtch на if , может будет нагляднее. блок условия - от { до } , выполняется только тогда , когда условие истинно. если условие ложно . ничего , что лежит в его блоке вызвано не будет. из чего следует что ? У вас сейчас такой аналог реализован:
0
|
|||||||||||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
|||||||
| 15.11.2019, 14:58 [ТС] | |||||||
|
Но здесь обычная логика не работает, или это просто я не понимаю Я отталкиваюсь от обычного консольного выполнения кода. Но в боте вот это, не работает
0
|
|||||||
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
||||||
| 15.11.2019, 15:01 | ||||||
|
DragonBorn88, да , тут вы пытаетесь своим алгоритмом изменить значение переменной "a" ,
в случае же бота , это значение программно менять нет смысла , оно вам уже передается аргументом функции. на нашем простом примере , нужно переписать пример так , что бы условия выполнялись без Console.ReadLine(). по этому повторю вопрос для второго примера: - как переписать код , что бы в случае a=2 , оно было выведено в консоль ? , никак не изменяя переменную "a" в вашем алгоритме.
0
|
||||||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||||||
| 15.11.2019, 15:03 [ТС] | ||||||
0
|
||||||
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
|||||||
| 15.11.2019, 15:14 | |||||||
|
в примере можно менять только комбинации условий , само определение const int a = 2; трогать нельзя вы написали свой пример , изменив изначальное значение переменой "a" , но мы договорились , что ее менять нельзя, иначе пример теряет смысл.
значение переменной "a" никак изменять и переписывать нельзя.
0
|
|||||||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||||||
| 15.11.2019, 15:19 [ТС] | ||||||
0
|
||||||
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
||||||
| 15.11.2019, 15:20 | ||||||
|
DragonBorn88, ха ха ) , нет , ну серьезно что-ли ?
и опять же , мы договорились , что const int a = 2; , и никак иначе. , эту строчку менять нельзя. подсказка: в нашем примере нужно просто правильно определить проверку значения переменной , никаких дополнительных переменных вводить не нужно . и не нужно их никак изменять.
0
|
||||||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
|
| 15.11.2019, 15:23 [ТС] | |
|
Я не знаю ка кпо другому реализовать
0
|
|
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
||||||
| 15.11.2019, 15:41 | ||||||
|
DragonBorn88, хорошо.
у Вас есть где-то пробел в понимании логики обработки алгоритмов , притом что Вы знаете синтаксис c# и пишете какие то программы , что в принципе невозможно , если не получается решить эту задачку. Нужно нащупать этот пробел , с помощью примеров.
- ведь значение A действительно равно 2-м Окей , исключим синтаксис c# , чиcто на логику: У Маши два яблока (const int а = 2) Если у Маши одно яблоко if(a==1) тогда: { если у Маши два яблока (что ???) if(a==2) console.write("a==2"); иначе: у Маши одно яблоко }
0
|
||||||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||||||
| 15.11.2019, 18:28 [ТС] | ||||||
|
Можно вот так реализовать
0
|
||||||
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
||
| 15.11.2019, 18:34 | ||
|
а если теперь заменить if (a == 1 || a == 2) на switch , не нарушая логику ?
0
|
||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
|
| 15.11.2019, 18:38 [ТС] | |
|
Сейчас придумаю что-то
0
|
|
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
|
| 15.11.2019, 18:41 | |
|
DragonBorn88, тут const уже можно убрать , это было для того . что бы не пытались "a" менять.
на реальном примере "a" будет меняться , но не вашим алгоритмом. https://docs.microsoft.com/ru-... rds/switch
0
|
|
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||||||
| 15.11.2019, 18:46 [ТС] | ||||||
0
|
||||||
|
2875 / 2081 / 386
Регистрация: 22.07.2011
Сообщений: 7,841
|
||||||
| 15.11.2019, 18:54 | ||||||
|
DragonBorn88, ну собственно вот и все.
дальше по аналогии переделываете ваш пример. Касательно if варианта , аналогом будет такое:
0
|
||||||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
|
| 15.11.2019, 18:59 [ТС] | |
|
Я не могу понять какие мне нужно параметры перадать в void OnMessage(int a)
0
|
|
| 15.11.2019, 18:59 | |
|
Как создать inline кнопки? Как посмотреть текст сообщения бота (Telegram bot, Python)? Telegram Bot(Telepot). Как сохранить введенное пользователем сообщение Telegram bot. Как вычислить на какое именно сообщение получен ответ? Telegram bot: как отправлять сообщения пользователю в определённый момент времени? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|