|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||||||
Как реализовать ввод пользователя в Telegram Bot`e в разветвлении Switch?14.11.2019, 14:40. Показов 17832. Ответов 89
Метки telegram bot (Все метки)
Здравствуйте! Пишу телеграм бота. Столкнулся со следующей проблемой:
Команды пользователя обрабатываю с помощью Swich Case. Понадобилось сдлеать разветвление. Когда пользователь выбирает команду "/Teachers" то бот просит его ввести Фамилию преподавателя, и выдаёт инфу о нём, а если такой фамилии нету, то выскакивает исключение.
0
|
||||||
| 14.11.2019, 14:40 | |
|
Ответы с готовыми решениями:
89
Telegram.Bot Как используя бота пригласить пользователя в приват канал? Как сделать так, чтобы Telegram bot работал для каждого пользователя отдельно? Ожидание ответа от пользователя telegram bot |
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
|
| 15.11.2019, 14:31 | |
|
DragonBorn88, не совсем.
оно никогда не будет выполнено потому , что переход к этому условию возможен только когда в e.Message находится /Teachers , в то время как само условие требует иного значения. - получаем логическое противоречие двух условий. что нужно сделать , что бы это условие выполнилось ?
0
|
|
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||
| 15.11.2019, 14:37 [ТС] | ||
|
0
|
||
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||
| 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 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
|||||||||||
| 15.11.2019, 14:51 | |||||||||||
|
Вы понимаете как работают условия в c# ?
замените свой swtch на if , может будет нагляднее. блок условия - от { до } , выполняется только тогда , когда условие истинно. если условие ложно . ничего , что лежит в его блоке вызвано не будет. из чего следует что ? У вас сейчас такой аналог реализован:
0
|
|||||||||||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
|||||||
| 15.11.2019, 14:58 [ТС] | |||||||
|
Но здесь обычная логика не работает, или это просто я не понимаю Я отталкиваюсь от обычного консольного выполнения кода. Но в боте вот это, не работает
0
|
|||||||
|
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||||||
| 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 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
|||||||
| 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 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||||||
| 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 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||||||
| 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 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||
| 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 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
|
| 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 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
|
||||||
| 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: как отправлять сообщения пользователю в определённый момент времени? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|