|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||||||
Как реализовать ввод пользователя в Telegram Bot`e в разветвлении Switch?14.11.2019, 14:40. Показов 17507. Ответов 89
Метки telegram bot (Все метки)
Здравствуйте! Пишу телеграм бота. Столкнулся со следующей проблемой:
Команды пользователя обрабатываю с помощью Swich Case. Понадобилось сдлеать разветвление. Когда пользователь выбирает команду "/Teachers" то бот просит его ввести Фамилию преподавателя, и выдаёт инфу о нём, а если такой фамилии нету, то выскакивает исключение.
0
|
||||||
| 14.11.2019, 14:40 | |
|
Ответы с готовыми решениями:
89
Telegram.Bot Как используя бота пригласить пользователя в приват канал? Как сделать так, чтобы Telegram bot работал для каждого пользователя отдельно? Ожидание ответа от пользователя telegram bot |
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 14.11.2019, 19:54 | ||
|
иначе получается несуразица , e.Message.Text не может одновременно содержать текст команды , текст сообщения бота и текст ответа пользователя. На каждом вызове Bot_OnMessage будет что-то одно из.
0
|
||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||
| 14.11.2019, 21:30 [ТС] | ||
|
Спасибо за ваш ответ. Это мой первый бот, поэтому я ещё не силён в написании кода. Подскажите пожалуйста как можно "Выйти из обработки текущего сообщения"?
Добавлено через 47 минут
0
|
||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 14.11.2019, 21:36 | |
|
DragonBorn88,
После вызова функции await botClient.SendTextMessageAsync(e.Message .Chat.Id, "Введите фамилию преподавателя: "); какое значение будет в переменной e.Message ?
0
|
|
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||
| 14.11.2019, 21:41 [ТС] | ||
|
Сейчас, как только я захожу в этот блок, бот мне присылает "Введите фамилию преподавателя: " и за тем сразу же "Вы ввели не правильную фамилию, или такого преподавателя нету!". Что поидеи должно быть исключением, если пользователь ввёл не верную фамилию
0
|
||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 14.11.2019, 21:44 | ||
|
по этому , все ваши условия if else не пройдут проверку , кроме последнего , где будет вызов: await botClient.SendTextMessageAsync(e.Message .Chat.Id, "Вы ввели не правильную фамилию, или такого преподавателя нету!");
0
|
||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||
| 14.11.2019, 21:49 [ТС] | ||
|
Так как нужно зделать это разветвление, что бы оно обрабатывалось не в функции "Bot_OnMessage"?
0
|
||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 14.11.2019, 21:55 | ||
|
0
|
||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
|
| 14.11.2019, 21:59 [ТС] | |
|
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 14.11.2019, 22:06 | |
|
DragonBorn88,
Если значение e.Message обновится только с последующим вызовом функции Bot_OnMessage , как следует поступить ?
0
|
|
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||
| 14.11.2019, 22:09 [ТС] | ||
|
0
|
||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 14.11.2019, 22:13 | |
|
В каком месте "логика разветвления" вызывает у Вас вопрос ?
По синтаксису можно почитать тут: https://docs.microsoft.com/ru-... reference/ Руководство по языку: https://docs.microsoft.com/ru-... harp/index
0
|
|
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||||||||
| 14.11.2019, 22:27 [ТС] | ||||||||
|
Я хочу реализовать внутренюю логику. Когда пользователь попадает в этот кейс, он пишет Фамилию преподавателя, если он ввёл правильно, то бот обрабатывает этот текст, и высылает фото, а если пользователь ввёл не верно, то выдаёт следующее исключение:
0
|
||||||||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 14.11.2019, 22:40 | ||
|
Вам нужно получить данные , которые пользователь отправил в чат и обработать их тем или иным образом. Данные содержатся в e.Message , отправка сообщения пользователем в чат бота = одно срабатывание Bot_OnMessage на которое вы реагируете . что-то отправляете пользователю в ответ , и ждете следующего срабатывания Bot_OnMessage с новыми данными. вот и вся логика.
0
|
||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||
| 14.11.2019, 22:41 [ТС] | ||
|
У меня не выход сделать так, что бы когда пользователь попадает в кейс "/Teachers" у него была возможность что либо ввести.
0
|
||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 14.11.2019, 22:43 | ||
|
Логику взаимодействия постом выше описал. Бот никак не управляет приложением чата , он лишь получает сообщения из чата по апи телеграма, и отправляет туда свои сообщения.
0
|
||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||
| 14.11.2019, 22:46 [ТС] | ||
|
0
|
||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 14.11.2019, 22:52 | ||
|
пользователь сидит в своем клиенте телеграмм - это может быть сайт , или мобильное приложение , или под винду. он отправляет сообщение вашему "боту" , который по сути является таким же пользователем. , эти сообщения попадают и хранятся в базе телеграмма. Ваше приложение просто подключается к этой базе , считывает из нее новые сообщения от пользователей адресованные "боту" , и , для удобства , передает их в функцию Bot_OnMessage. Вот и все , поэтому пользователь никуда попасть не может. Мгновенно Вы эти сообщения обработаете или через год , так-же не имеет никакого значения , в один момент времени можно что-то прочитать , а через месяц отправить какой-то ответ. Пользователь за это время может настрочить еще сотню сообщений , а Вы последовательно будете их получать в функцию Bot_OnMessage и обрабатывать.
0
|
||
|
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
|
||
| 14.11.2019, 22:55 [ТС] | ||
|
У меня выдаёт ошибку при попытке загрузить фото.
Вы можете посмотреть его за этой ссылкой https://drive.google.com/open?... 6NMzokLdX0 Добавлено через 2 минуты
0
|
||
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|||
| 14.11.2019, 23:08 | |||
|
Тут я , наверное , важный концепт упустил , о котором следует упомянуть: код функции выполняется последовательно сверху-вниз , аргументы функции не могут измениться "сами по себе" пока ваша программа не закончит выполнять тело функции , так же как и сама функция не будет вызвана повторно пока не завершится ее текущая обработка.
0
|
|||
| 14.11.2019, 23:08 | |
|
Помогаю со студенческими работами здесь
20
Как создать inline кнопки? Как посмотреть текст сообщения бота (Telegram bot, Python)? Telegram Bot(Telepot). Как сохранить введенное пользователем сообщение Telegram bot. Как вычислить на какое именно сообщение получен ответ? Telegram bot: как отправлять сообщения пользователю в определённый момент времени? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|