Answer the question
In order to leave comments, you need to log in
How to forward information sent to a bot to another user?
There is a bot with a keyboard in which there are several scenarios
Depending on the scenario, the user selects an option (in the example "breakfast" - "light" - "there is a question" - "question")
, another user should receive this information (format "user 1" wrote
. will be different from the main one)
Further, the answer is also transferred to the bot's dialogue with user 1
Another mini question: how to get the id of the dialogue with user 2 so that user 1 writes to him
Код:
import telebot
from telebot import types
import const
bot = telebot.TeleBot(const.API_TOKEN) #токен в отдельном файле, модно просто заменить
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
bot.reply_to(message, "Привет Что хочешь поесть? \n\n Мануал ", reply_markup=markup_menu )
markup_menu = types.ReplyKeyboardMarkup (resize_keyboard=True, row_width=1)
btn_zavtrak= types.KeyboardButton ('Хочу позавтракать') #здесь в дальнейшем будут еще варианты, в зависимости от кнопки информация должна пересылаться разным людям (id чата заранее известны )
markup_menu.add( btn_zavtrak)
@bot.message_handler(func=lambda message: True)
def echo_all(message):
if message.text == "Хочу позавтракать":
bot.reply_to(message, 'Варианты завтраков', reply_markup=markup_zavtrak )
# bot.send_message(chat_id="841260346", text="Хочу позавтракать"). #попытка сделать пересыл информации при нажатии на опресненную кнопку определенному человеку (такой вариант не сработал )
if message.text == "Легкий":
bot.reply_to(message, 'Выбран легкий, есть вопросы?', reply_markup=markup_otvet)
# bot.send_message(chat_id="841260346", text="Легкий"). #id чата заменяем на свой
if message.text == "Вопросов нет":
bot.reply_to(message, 'Ваш запрос принят, обработка займет не более 5 мин')
# bot.send_message(chat_id="841260346", text="вопросов нет")
if message.text == "Есть вопрос":
bot.reply_to(message, 'Задайте ваш вопрос и нажмите завершить', reply_markup=markup_ok)
if message.text == "Завершить":
bot.reply_to(message, 'Ваш запрос принят, обработка займет не более 5 мин')
else:
msg = "Пользователь {} написал \"{}\".".format(message.from_user.username, message.text)
bot.send_message('841260346', msg)
# в итоге все свел в else но при таком раскладе получается что вся информация независимо от кнопок будет прилетать одному человеку
markup_zavtrak = types.ReplyKeyboardMarkup (resize_keyboard=True, row_width=3)
btn_legkii_zavtrak = types.KeyboardButton ('Легкий')
markup_zavtrak.add(btn_legkii_zavtrak)
markup_otvet = types.ReplyKeyboardMarkup()
btn_noq = types.KeyboardButton ('Вопросов нет')
btn_q = types.KeyboardButton ('Есть вопрос')
markup_otvet.add(btn_q,btn_noq )
markup_ok = types.ReplyKeyboardMarkup (resize_keyboard=True, row_width=1)
btn_ok= types.KeyboardButton ('Завершить')
markup_ok.add( btn_ok)
bot.polling()
Answer the question
In order to leave comments, you need to log in
There are a lot of questions that can be replaced with one - "Can you write the code for me?".
I'll help you a little by pointing you in the right direction. This is not a panacea, but I would solve the problem with these methods.
on this one:
It will look like just a message, not a reply with constant quoting of the previous message.
def generate_keyboard (*answer):
keyboard = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
for item in answer:
keyboard.add(item)
return keyboard
msg = 'Тут будет твое сообщение.' # Сообщение, которое будем отправлять
keyboard = generate_keyboard('Кнопка 1', 'Кнопка 2', 'Кнопка 3') #Генерируем клавиатуру
bot.send_message(message.chat.id, msg, reply_markup=keyboard) #Отправляем сообщение и клавиатуру
if message.text == "Хочу позавтракать":
users_orders[message.chat.id][eating] = breakfast
keyboard = generate_keyboard('Вариант 1', 'Вариант 2', 'Вариант 3')
bot.send_message(message.chat.id, 'Выберите завтрак', reply_markup=keyboard )
if message.text == "Завершить":
hide_keyboard = types.ReplyKeyboardRemove()
bot.send_message(message.chat.id, 'Ваш запрос принят, обработка займет не более 5 мин', reply_markup=hide_keyboard)
msg = " От клиента {} поступил заказ:\n{}.\nИ вопрос:\n" \
"{}".format(message.chat.id, users_orders[message.chat.id][eating], users_orders[message.chat.id][question])
bot.send_message('841260346', msg)
# bot.send_message(chat_id="841260346", text="Хочу позавтракать").
# bot.send_message(chat_id="841260346", text="Легкий"). #id чата заменяем на свой
# bot.send_message(chat_id="841260346", text="вопросов нет")
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question