Как получить последнее сообщение в teleapi?
столкнулся с проблемой, написал простейший обработчик события if message.text == 'Добавить' и не могу сохранить последнее сообщение пользователя, все время сохраняет слово 'Добавить', я пробовал делать bot.register_next_step_handler()., но не вышло, мне нужно брать сообщение пользователя, которое идет после 'Добавить'. Надеюсь, что объяснил понятно, ибо сломал всю голову
import telebot
import config
import time
from telebot import types
bot = telebot.TeleBot(config.TOKEN)
#обновляем список админов
users = open('main_users.txt', 'r')
admins = []
for user in users:
admins.append(user.replace('\n', ''))
#комманды
@bot.message_handler(commands=["start"])
def start(message):
global auth_btn
auth = types.ReplyKeyboardMarkup(resize_keyboard=True)
auth_btn = types.KeyboardButton('Войти')
auth.add(auth_btn)
bot.send_message(message.chat.id, 'Приветствую, {0.first_name}!\nДля продолжения пройдите, пожалуйста, проверку'.format(message.from_user),
parse_mode='html', reply_markup=auth)
@bot.message_handler(content_types=["text"])
def main(message):
user = message.from_user.username
main = types.ReplyKeyboardMarkup(resize_keyboard=True)
main_admin = types.KeyboardButton('Админы')
main_temp = types.KeyboardButton('Шаблоны')
main_ways = types.KeyboardButton('Маршруты')
main.add(main_admin, main_temp, main_ways)
edit_admin = types.ReplyKeyboardMarkup(resize_keyboard=True)
back = types.KeyboardButton('Назад')
delete = types.KeyboardButton('Удалить')
add = types.KeyboardButton('Добавить')
edit_admin.add(back, delete,add)
if message.text == 'Войти':
if user in admins:
bot.send_message(message.chat.id, 'Добро пожаловать, {0.first_name}'.format(message.from_user), parse_mode='html', reply_markup=main)
else:
bot.send_message(message.chat.id, 'Извините, вас нет в списке пользователей, обратитесь к администратору')
admin = ''
cnt = 0
for a in admins:
cnt+=1
admin += str(cnt)+ ': ' + a + '\n'
if message.text == 'Админы':
bot.send_message(message.chat.id, admin, reply_markup=edit_admin)
if message.text == 'Добавить':
add = bot.send_message(message.chat.id, 'Введите id пользователя и <strong>отправьте</strong> сообщение', parse_mode='html')
# print(message.text)
# with open('main_users.txt', 'a', encoding='utf-8') as f:
# f.write('\n'+ message.text)
# f.close()
if message.text == 'Удалить':
pass
if message.text == 'Назад':
bot.send_message(message.chat.id, 'Слушаю', parse_mode='html', reply_markup=main)
if __name__ == '__main__':
bot.infinity_polling()
Ответы (1 шт):
Автор решения: Anton Elesin
→ Ссылка
Проблема довольно примитивная, как оказалось, вчера нашел решение. Нужно было использовать bot.register_next_step_handler(), вернее, правильное его использование. For ex.
@bot.message_handler(content_types=["text"])
def welcome(message):
mesg = bot.send_message(message.chat.id,'Please send me message')
bot.register_next_step_handler(mesg,test)
def test(message):
bot.send_message(message.chat.id,message.text)