我刚刚开始制作我的第一个大型机器人,但我立即遇到了一个错误:
*(async_telebot.py:591 MainThread) ERROR - TeleBot: "'CallbackQuery' object has no attribute 'chat'*
当我按下返回按钮时,这个错误弹出,我完全不知道该怎么办。
代码:
import asyncio
from telebot.async_telebot import AsyncTeleBot
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
bot = AsyncTeleBot("TOKEN")
@bot.message_handler(commands=['start'])
async def cmd_start(message):
await bot.send_message(message.chat.id, "Привет ✌️ ")
markup = InlineKeyboardMarkup(row_width=1)
item1 = InlineKeyboardButton("Все активы", callback_data='bt1')
item2 = InlineKeyboardButton("Выбор счета", callback_data='bt2')
item3 = InlineKeyboardButton("Группу счетов", callback_data='bt3')
markup.add(item1, item2, item3)
await bot.send_message(message.chat.id, 'Выбери где будут вестись финансы:', reply_markup=markup)
@bot.callback_query_handler(func=lambda callback: True)
async def handle_callback(callback):
if callback.data == "bt1":
await handle_all_assets(callback)
elif callback.data == "bt2":
await handle_account_selection(callback)
elif callback.data == "bt3":
await handle_group_selection(callback)
elif callback.data == "back1" or callback.data == "back2" or callback.data == "back3":
await cmd_start(callback)
async def handle_all_assets(callback):
markup = InlineKeyboardMarkup(row_width=2)
plus1 = InlineKeyboardButton(text="Добавить ➕", callback_data="plus1")
minus1 = InlineKeyboardButton(text="Убрать ➖", callback_data="min1")
back1 = InlineKeyboardButton(text="Назад", callback_data="back1")
markup.add(plus1, minus1, back1)
await bot.send_message(callback.message.chat.id, "Общее количество финансов:", reply_markup=markup)
async def handle_account_selection(callback):
markup = InlineKeyboardMarkup(row_width=2)
plus2 = InlineKeyboardButton(text="Добавить ➕", callback_data="plus2")
minus2 = InlineKeyboardButton(text="Убрать ➖", callback_data="min2")
back2 = InlineKeyboardButton(text="Назад", callback_data="back2")
markup.add(plus2, minus2, back2)
await bot.send_message(callback.message.chat.id, "Убрать/добавить счет:\n", reply_markup=markup)
async def handle_group_selection(callback):
await bot.send_message(callback.message.chat.id, "Убрать/добавить новую группу:")
asyncio.run(bot.polling())