Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 13.12.2022
Сообщений: 12
Telegram Bot

Feedback

29.10.2023, 02:07. Показов 570. Ответов 0

Студворк — интернет-сервис помощи студентам
Приветствую. Начал заниматься разработкой бота под телеграмм и столкнулся с такой проблемой в реализации.

Имеется: пользователь, админ.

Что происходит:
Пользователь после нажатия на "START" или ввода команды /start получает доступ к трем кнопкам а затем, или в уже существующей клавиатуре после предыдущего использования команды, выбирает одну из трех кнопок. Разберем ситуацию с кнопкой "Feedback".
Админ получает сообщение от бота в виде Forwarded message от пользователя. Администратор отвечает на него и текст сообщения пересылается пользователю в ответ на его сообщение, которое он отправлял после нажатия на кнопку и триггер-сообщения о том, что ему необходимо ввести текст - "Enter the text".

Какая проблема:
Я реализовал работу только кнопки Feedback (остальные будут фактически такие же, админ может ответить на все три типа сообщения), где пользователь пишет свой отзыв.

1) Админу пересылается его сообщение Forward'ом и я пытался сделать некий обработчик события нажатия на конкретную кнопку. Из разряда: если пользователь нажимает на Feedback, то админу отправляется Forward месседж, перед ним текст: "You recieve Feedback:" (1). Однако я не смог реализовать это так, чтобы данное сообщение отправлялось только после написания текста от пользователя. (1) отправлялось заранее до написания, в следствии чего пользователь мог не отвечать боту, а админ сообщение (1) получил, но уже без последующего текста пользователя. Вопрос: можно ли как-то сделать передачу параметра flag в мои функции помимо message, чтобы обрабатывать конкретное нажатие на кнопку? Если нет, то существует ли альтернатива? Поскольку будут активны три кнопки, то хотелось бы сделать классификацию пересылаемых сообщений.

2) Если от пользователя приходят 2+ сообщения, то одно написанное сообщение от админа возвращается на оба сообщения пользователя. Если приходят сообщения от двух разных пользователя, то одно сообщение админа также возвращается к последнему написавшему в количестве отправленных сообщений (в нашем случае два раза). Вопрос: можно ли как-то реализовать отправку сообщения от админа пользователю только в том случае, если админ ответил боту на конкретное пересланное сообщение от пользователя, условно обрабатывать reply-message (наверное нужно создать handler на тип reply?)

Пытался разобраться в документации по этим вопросам, но не обнаружил решения моих проблем (только учусь работать с документацией).

Из-за незнания как передать в следующий метод какой-то параметр пришлось вынести user_id в global переменную. adm - admin's chat_id заглушка в данной теме.

Код:

Python
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
import telebot
from telebot import types
from echo.config import TG_TOKEN
 
token = TG_TOKEN
bot = telebot.TeleBot(token)
 
adm = 123456789
 
@bot.message_handler(commands=['start'])
def start_message(message):
 
    markup_start = types.ReplyKeyboardMarkup(resize_keyboard=True)
    markup_start.add(*[types.KeyboardButton(name) for name in ['Feedback', 'Question']])
    markup_start.add(*[types.KeyboardButton(name) for name in ['Suggestion']])
 
    bot.send_message(message.chat.id, "Hi! Choose what you want to send.", reply_markup = markup_start)
 
 
def forward_adm(message):
 
    print('->forward_adm')
    print('User text to admin')
    print(f'{message.chat.id} - User -> {adm} - Admin, text = {message.text}'), print()
 
    bot.forward_message(adm, message.chat.id, message.message_id)
    preforward_usr(message)
 
def preforward_usr(message):
 
    print('->forward_usr')
    print('Waiting Admin text'), print()
 
    global usr_id
    usr_id = message.chat.id
 
    msg = bot.send_message(adm, 'Enter the answer')
    bot.register_next_step_handler(msg, forward_usr)
 
def forward_usr(message):
 
 
    print('->forward_usr_1')
    print('Admin text to user')
    print(f'{adm} - Admin -> {message.chat.id} - User, text = {message.text}'), print()
 
    bot.send_message(usr_id, '{}'.format(message.text))
 
 
@bot.message_handler(content_types=['text'])
def message(message):
 
    if message.text == 'Feedback':
 
        msg = bot.send_message(message.chat.id, 'Enter the text')
        bot.register_next_step_handler(msg, forward_adm)
 
    elif message.text == 'Question':
        bot.send_message(message.chat.id, '2')
    elif message.text == 'Suggestion':
        bot.send_message(message.chat.id, '3')
 
 
def main():
    bot.infinity_polling()
 
if __name__ == "__main__":
    main()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.10.2023, 02:07
Ответы с готовыми решениями:

feedback
пожалуйста помогите прилепиь feedback на этот индекс <?php require('settings.php'); $site=$_SERVER; $index=start; $menu_tmpl...

Feedback
Добрый день! как можно реализовать обратную связь в приложении? при вызове, по нажатию клавиши, должно вызываться окно, там пользователь...

DLL feedback
Доброго дня! Как в хостовой программе импортировать что-либо инициированное в DLL? SendMessage?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.10.2023, 02:07
Помогаю со студенческими работами здесь

Ошибка в feedback
Здравствуйте, помогите пожалуйста разобраться, где ошибка в коде, тк когда тестирую выдает: "Ошибка при отправке письма. Пожалуйста...

Функция feedback
мне нужно рассмотреть применение функции feedback к системе с единичной обратной связью.. у меня заданы две передаточные функции ...

Js feedback reload prob
вот сайт http://www.bymaga.hol.es/ там есть форма feedback (обратная связь) когда заполняешь форму там выплёвывается див что всё хорошо, но...

Feedback Обратная связь
Добрый день дорогие форумчане! Второй день мучаюсь над вопросом как же реализовать фидбек на своём html сайте. Вот как выглядит сама...

feedback. не отправляются письма
Собственно это вся проблема. Письма не уходят. Погуглил, при select * from b_event where event_name like '%form%' order by date_insert...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru