Форум программистов, компьютерный форум, киберфорум
C#: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/88: Рейтинг темы: голосов - 88, средняя оценка - 4.50
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373

Как реализовать ввод пользователя в Telegram Bot`e в разветвлении Switch?

14.11.2019, 14:40. Показов 17830. Ответов 89

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пишу телеграм бота. Столкнулся со следующей проблемой:
Команды пользователя обрабатываю с помощью Swich Case. Понадобилось сдлеать разветвление. Когда пользователь выбирает команду "/Teachers" то бот просит его ввести Фамилию преподавателя, и выдаёт инфу о нём, а если такой фамилии нету, то выскакивает исключение.



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
private static async void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {     
            if (e.Message == null || e.Message.Type != MessageType.Text) return;
 
            switch (e.Message.Text.Split(' ').First())
            {
                case "/News": //Новинки происходящие на факультете
                    await botClient.SendChatActionAsync(e.Message.Chat.Id, ChatAction.UploadPhoto);
                    const string News = @"D:\Projekts\NulesIT_Bot\NulesIT_Bot\Image\News\photo_2019-11-11_10-12-57.jpg";
                    var news = News.Split(Path.DirectorySeparatorChar).Last();
                    using (var fileStream = new FileStream(News, FileMode.Open, FileAccess.Read, FileShare.Read))
                    {
                        await botClient.SendPhotoAsync(
                            e.Message.Chat.Id,
                            fileStream);
                    }
                    break;
                
                case "/PairSchedule": //Расписание занятий
                    await botClient.SendTextMessageAsync(e.Message.Chat.Id, "По этой ссылке вы можете детально ознакомиться с рассписанием занятий:\n" +
                    "https://nubip.edu.ua/node/2969/6");
                    break;
 ///////////////////////////////////Место для проб и ошибок////////////////////////////////////////////////////
                               
                case "/Teachers":
 
                    await botClient.SendTextMessageAsync(e.Message.Chat.Id, "Введите фамилию преподавателя: ");                    
 
                    if (e.Message.Text.Split(' ').First() == "Басараб")
                    {
                        await botClient.SendChatActionAsync(e.Message.Chat.Id, ChatAction.UploadPhoto);
                        const string Bas = @"D:\Projekts\NulesIT_Bot\NulesIT_Bot\Image\Screenshot_1.png";
                        var pr1 = News.Split(Path.DirectorySeparatorChar).Last();
                        using (var fileStream = new FileStream(Bas, FileMode.Open, FileAccess.Read, FileShare.Read))
                        {
                            await botClient.SendPhotoAsync(
                                e.Message.Chat.Id,
                                fileStream);
                        }
                    }
                    else if (e.Message.Text.Split(' ').First() == "Ткаченко")
                    {
 
                    }
                    else if (e.Message.Text.Split(' ').First() == "Миловидов")
                    {
 
                    }
                    else
                    {
                        await botClient.SendTextMessageAsync(e.Message.Chat.Id, "Вы ввели не правильную фамилию, или такого преподавателя нету!");
                    }
                    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    break;
 
                default:
                    await botClient.SendTextMessageAsync(e.Message.Chat.Id, @"Доступные команды:
 
/News Новости факультета
/PairSchedule Рассписание занятий.
/Teachers преподаватели факультета.
                    ");
                    break;
            }
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2019, 14:40
Ответы с готовыми решениями:

Telegram.Bot Как используя бота пригласить пользователя в приват канал?
Не подскажите как можно при помощи бота пригласить пользователя в приват канал, зная номер этого юзера?

Как сделать так, чтобы Telegram bot работал для каждого пользователя отдельно?
Здравствуйте. Я написал телеграмм бота, он авторизуется на сайте электронного дневника и выдает расписание, дз и так далее. Моя проблема...

Ожидание ответа от пользователя telegram bot
Не приходит идей в голову как ожидать ответа от пользователя в данном случае. Что происходит: USER: /start BOT: Чем могу быть...

89
 Аватар для sau
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
15.11.2019, 19:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от DragonBorn88 Посмотреть сообщение
Я не могу понять какие мне нужно параметры перадать в void OnMessage(int a)
я писал , она вызывается "автоматически" , это точка входа для вашего алгоритма.
ее параметры устанавливаются "автоматически" , на основании введенного пользователем в чат сообщения.

Вы же не задаетесь вопросом , как Вам вызвать в консольном приложении функцию Main(string[] args) ? - где args передаются пользователем в момент запуска приложения.
считайте OnMessage аналогом. (хотя это не совсем так , но тут нужно будет про события и делегаты читать . не будем усложнять)
0
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
15.11.2019, 19:07  [ТС]
Я всё равно не могу понять как мне свой код, переделать под ваш пример
0
 Аватар для sau
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
15.11.2019, 19:14
Цитата Сообщение от DragonBorn88 Посмотреть сообщение
Я всё равно не могу понять как мне свой код, переделать под ваш пример
нужно попрактиковаться в работе с IF или Switch , это несложно.
когда поймете как оно работает , должно быть легко исправить проблему в вашем коде. , просто по аналогии с примерами.
По тем шагам , что мы разобрали , уже должно быть понятно , что не так с условиями в секции case "/Teachers":
0
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
15.11.2019, 19:26  [ТС]
Я уже понял что условные операторы мне нужно подтянуть.
Просто дело в том, что я студент, и даную работу мне нужно будет на днях сдавать, а мне ещё нужно реализовать много задумок.
А я уже 4 дня как стою на одном месте, и трачу время в пустую, пытаясь решить даную проблему.
Благодаря Вам я немного глубже разобрался в даном коде. За это вам огромное спасибо.
Я понимаю что для вас это выглядит элементарным, и мои ошибки глупы. Но я только вхожу в даную сферу, и для меня всё это очень сложно.
По этому я вас очень прошу, если если можете помочь, то помогите. Буду вам очень признателен.
Если нет, то я удалю даный кейс, потому что у меня уже попросту опускаются руки
0
 Аватар для sau
2875 / 2080 / 386
Регистрация: 22.07.2011
Сообщений: 7,837
15.11.2019, 19:36
Я думаю , Вы непосильную задачу взяли , телеграм.бот задача не для новичков однозначно.
Даже если разобраться с этими операторами , там будет еще мильон нюансов. , состояние диалога , работа с БД , и т.д и т.п.
Помогаю как умею , уже 10-ть часов )

Удалите у себя из алгоритма все сложные условия , оставьте только swith-case , и для каждого кейса пропишите вывод в консоль значения e.Message
дальше возможно станет понятнее.
0
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
15.11.2019, 21:53  [ТС]
Цитата Сообщение от sau Посмотреть сообщение
состояние диалога , работа с БД , и т.д и т.п.
Мне не нужно так глубоко углубляться. Что будет делать бот, решаю только я. Поэтому и написал что удалю этот кейс, так-как в понидельник нужно сдавать работу, а я 4 дня потерял решая даную проблему, и практически не здвинулся с места.
Задание я не выбирал, нам в универе задали написать телеграм бота.
Я за метил сколько времени вы на меня потратели, и за это вам благодарен

Добавлено через 2 часа 10 минут
Цитата Сообщение от sau Посмотреть сообщение
Удалите у себя из алгоритма все сложные условия , оставьте только swith-case
Не бубу я удалять сложные условия, так-как это не самообразовательная работа, а в универ на оценку
0
0 / 0 / 0
Регистрация: 24.03.2020
Сообщений: 6
27.03.2020, 19:21
Привет, друг!
Если у тебя получилось решить данную проблему, не мог бы поделиться решением? Столкнулся с той же проблемой, не получается найти подходящего решения
Спасибо)
0
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
27.03.2020, 19:55  [ТС]
Цитата Сообщение от Dmitriy_112233 Посмотреть сообщение
Привет, друг!
Привет, товарищ по несчастью
К сожалению не удалось решить эту проблему(. ОЧень много времени потратил на неё, но к решению так и не пришел
0
0 / 0 / 0
Регистрация: 24.03.2020
Сообщений: 6
27.03.2020, 22:38
Понятно
Пока все сошлось на то, что необходимо работать с базой данных, и бот должен опираться на инфу из базы данных, и само собой вносить туда новую инфу, ну и так по кругу)
0
16 / 12 / 4
Регистрация: 10.09.2018
Сообщений: 373
28.03.2020, 16:04  [ТС]
Цитата Сообщение от Dmitriy_112233 Посмотреть сообщение
необходимо работать с базой данных
Мне кажется это слишком глубоко Вы копнули.
Читали мою переписку с Sau ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2020, 16:04

Как создать inline кнопки?
При создании бота столкнулся с одной, не очень приятной, проблемой. Связанна она с созданием inline кнопок. В более ранних версиях...

Как посмотреть текст сообщения бота (Telegram bot, Python)?
Использую библиотеку Telebot. Ситуация: пользователь написал боту сообщения. Мне нужно узнать текст сообщения бота, которое находится...

Telegram Bot(Telepot). Как сохранить введенное пользователем сообщение
Здравствуйте. Допустим, при запуске бот попросил пользователя ввести номер телефона (адрес Email, номер карты и т.д.). После того, как...

Telegram bot. Как вычислить на какое именно сообщение получен ответ?
Доброго времени суток, коллеги! Пишу своего первого бота на основе WebApi, использую Webhook, столкнулся с таким вопросом: Как вычислить...

Telegram bot: как отправлять сообщения пользователю в определённый момент времени?
Как отправлять сообщения пользователю, в определённый момент времени?


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

Или воспользуйтесь поиском по форуму:
90
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
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 Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru