Как создать чтобы телеграм бот запоминал что писал пользователь?
Я только учусь писать телеграмм бота так-то не судуте строго! Решил написать телеграмм бота который принимает тег игрока в бравл старсе и должен при нажатия кнопки должен показывать его профиль и его кубки, но после принятие тега игрока бот не запоминает тег и ничего не пишет. Покажу лучшее код:
import brawlstats
import telebot
from telebot import types
#токены
bot = telebot.TeleBot("токен для телеграм")
client = brawlstats.Client(
'токен для бравла')
__player__ = ""
#команда бота /start
@bot.message_handler(commands=["start", "restart"])
def start(message):
bot.send_message(message.chat.id, '<b>Здравсвуйте, это телеграм бот для бравла!!!</b>'
'\nДля использование бота, с перва напишете свой тег прямо в чат'
'\n1. Внимательно пишете свой тег'
'\n2. Без хештога --> #', parse_mode="html")
if message.text == '/start' or message.text =="/restart":
bot.register_next_step_handler(message, _player_)
def _player_(message):
global _player
__player__ = message.text
try:
player = client.get_profile(__player__)
keyboard = types.InlineKeyboardMarkup()
key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes')
keyboard.add(key_yes)
key_no = types.InlineKeyboardButton(text='Нет', callback_data='no')
keyboard.add(key_no)
bot.send_message(message.chat.id, f"Это ты: {player.name} ?", reply_markup=keyboard, parse_mode="html")
except Exception as E:
keyboard = types.InlineKeyboardMarkup()
key_again = types.InlineKeyboardButton(text='Занова', callback_data='again')
keyboard.add(key_again)
bot.send_message(message.chat.id, "<b>Вы ввели не правильно свой тег!!</b>\n1.Пишете без хештега.\n2.Проверьте правильно ли вы написали", reply_markup=keyboard, parse_mode="html")
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
if call.data == "yes":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
_Profile_ = types.KeyboardButton("Профиль")
markup.add(_Profile_)
bot.send_message(call.message.chat.id, f"<b>Приятного пользование нашим ботом</b>, если хотите изменить свой профиль, просто напишете /restart", parse_mode="html")
elif call.data == "no":
bot.send_message(call.message.chat.id, "Попробуем еще раз! Пере проверьте свой написанный тег")
bot.register_next_step_handler(call.message, _player_)
elif call.data == "again":
bot.send_message(call.message.chat.id, f"Напишите занова свой тег")
bot.register_next_step_handler(call.message, _player_)
@bot.message_handler(content_types=["text"])
def get_mes(message):
if message.text == "Профиль":
player = client.get_profile(__player__)
bot.send_message(message.chat.id, f"<b>Имя: </b>{player.name}"
f"\n<b>Кубки: </b>{player.trophies} \U0001F3C6"
f"\n<b>Макс. кубков: </b>{player.highest_trophies} \U0001F451"
f"\n<b>Побед 3 на 3: </b>{player.team_victories} \U0001F480"
f"\n<b>Побед в соло ШД: </b>{player.solo_victories} \U0001F308"
f"\n<b>Побед в дуо ШД: </b>{player.duo_victories} \U0001F4AA", parse_mode="html")
Кратка мне надо запомнить что написал пользоваетль в переменную player и ввыдите данные с него
Ответы (1 шт):
Автор решения: Danny
→ Ссылка
@bot.message_handler(commands=["start", "restart"])
def start(message):
user_message = bot.send_message(message.chat.id, """Здравсвуйте, это телеграм бот для бравла!!!
Для использование бота, с перва напишете свой тег прямо в чат
1. Внимательно пишете свой тег
2. Без хештога --> #""", parse_mode="html")
if message.text == '/start' or message.text =="/restart":
bot.register_next_step_handler(user_message, _player_)
def _player_(message):
try:
player = client.get_profile(user_message)
keyboard = types.InlineKeyboardMarkup()
key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes')
keyboard.add(key_yes)
key_no = types.InlineKeyboardButton(text='Нет', callback_data='no')
keyboard.add(key_no)
bot.send_message(message.chat.id, f"Это ты: {player.name} ?", reply_markup=keyboard, parse_mode="html")
except Exception as E:
keyboard = types.InlineKeyboardMarkup()
key_again = types.InlineKeyboardButton(text='Занова', callback_data='again')
keyboard.add(key_again)
bot.send_message(message.chat.id, "<b>Вы ввели не правильно свой тег!!</b>\n1.Пишете без хештега.\n2.Проверьте правильно ли вы написали", reply_markup=keyboard, parse_mode="html")
Не определил переменную для ответа пользователя