Написал бота, архитектура из двух файлов bot и game, бот работает до тех пор как дело доходит до начала игры и вылетает ошибка которую я не понимаю "AttributeError: 'Message' object has no attribute 'send_message'. Did you mean: 'pinned_message'?"
файл игры, telebot пайчарм его не импортирует
Python:
import logging
import telebot
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
bot = telebot.TeleBot('')
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, 'I am online! Я в сети!')
logger.info(f"Запущен новый чат: {message.chat.id}")
@bot.message_handler(func=lambda message: message.text.lower() == 'hello')
def hello(message):
bot.send_message(message.chat.id, "Hello! How are you doing today? Would you like to play a game?\n\n"
"Привет! Как у тебя дела сегодня? Не хотите ли поиграть в игру?")
@bot.message_handler(content_types=['text'])
def handle_user_reply(message):
if message.text.lower().strip() == 'yes':
bot.send_message(message.chat.id, "Great! Let's play a guessing game.Отлично! Давайте поиграем в угадайку\n\n"
"I will choose a letter between A and Z. Can you guess it in three tries?\n\n"
"Я выберу букву от А до Я. Сможете ли вы угадать ее с трех попыток.")
bot.register_next_step_handler(message, play_game, message.chat.id, 3)
def play_game(bot, chat_id, num_tries):
import letter_guess # импортируем файл игры letter_guess
letter_guess.play_game(bot, chat_id, num_tries)
bot.polling(none_stop=True, interval=0)
Код:
import random
def play_game(bot, chat_id, num_tries):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
def get_random_letter():
return random.choice(alphabet)
def check_input(msg):
try:
input_char = msg.text[0].lower()
if input_char in alphabet:
return input_char
else:
raise ValueError("Please enter a single letter from A to Z.")
except Exception as e:
print(f'Caught exeption: {e}')
return None
secret_letter = get_random_letter()
attempts = 0
while attempts < num_tries:
attempt_text = f"Attempt #{attempts + 1}: Enter a letter."
bot.send_message(chat.id, attempt_text) # Используйте chat_id напрямую
# Предполагается, что msg получен из обработчика сообщений
response = check_input(msg)
if response is None:
continue
if response == secret_letter:
win_text = f"Congratulations! You guessed the correct letter: '{secret_letter}'!"
bot.send_message(chat.id, win_text)
break
elif response in alphabet:
current_index = alphabet.index(response)
secret_index = alphabet.index(secret_letter)
if current_index < secret_index:
feedback_text = f"The correct letter is further right in the alphabet."
else:
feedback_text = f"The correct letter is further left in the alphabet."
bot.send_message(chat.id, feedback_text)
attempts += 1
if attempts == num_tries:
loss_text = f"Sorry, you ran out of tries. The correct letter was: '{secret_letter}'."
bot.send_message(chat.id, loss_text)