Ошибка aiogram 3
При нажатии на Inline кнопки в личных сообщениях все работает отлично, но если сделать это в группе то вылезет ошибка : Cause exception while process update id=11439152 by bot id=6476844061 TelegramBadRequest: Telegram server says - Bad Request: message to edit not found
from aiogram import types, Dispatcher, Bot
from aiogram.filters import Command
from aiogram.types import Message
from aiogram.utils.keyboard import InlineKeyboardBuilder
import random
bot = Bot("6476844061:AAEt9Drg2fRihI_WhAYCZTh_Xz5wvF6J8Ns")
text1 = "??| з'їсти\n?| вбити\n?| вдарити\n?| обійняти\n?| налякати\n?| заспівати\n✋| дати п'ять\n?| cлідкувати\n❤️| поцілувати\n?| привітатися\n?| обматерити\n?| прогулятись\n?| поспівчувати\n☢| кинути ядерку\n?| вдягнути маску клоуна\n?| записати в Зошит Смерті"
text2 = '<b>call</b> - скликати\n<b>ban</b> - забанити\n<b>mute</b> - замутити\n<b>unmute</b> - розмутити\n<b>offchat</b> - вимкнути чат\n<b>onchat</b> - ввімкнути чат\n\n(Тільки для типу группи: <b>Public</b>)'
text3 = "⚠ Команда повинна бути відповіддю на повідомлення."
dp = Dispatcher()
allow_stickers = False
@dp.message(Command("start"))
async def start(message: Message):
builder = InlineKeyboardBuilder()
builder.add(types.InlineKeyboardButton(text="Додати мене в группу",url="https://t.me/babashuras_bot?startgroup"))
await message.answer(f'Привіт, <b>{message.from_user.first_name}</b> ! Я баба Шура.\nЩоб відкрити меню бота: /help\n\nІнформація про бота: <a href="https://t.me/babaShurasChannel">Баба Шура </a> \nПо всім питанням сюди: @Vip_frog\nБудемо дуже вдячні за поширення.', disable_web_page_preview=True, parse_mode='html',reply_markup=builder.as_markup())
@dp.message(Command("help"))
async def start(message: Message):
builder = InlineKeyboardBuilder()
builder.add(types.InlineKeyboardButton(text="RP| Команди",callback_data="com1"))
builder.add(types.InlineKeyboardButton(text="Mod| Команди", callback_data="com2"))
await message.answer('Привіт! Це меню Баби Шури!\n\nОберіть потрібну вам кнопку:',reply_markup=builder.as_markup())
@dp.callback_query()
async def callbacks(callback: types.CallbackQuery):
builder = InlineKeyboardBuilder()
builder.add(types.InlineKeyboardButton(text="? Назад ?", callback_data="return"))
builder1 = InlineKeyboardBuilder()
builder1.add(types.InlineKeyboardButton(text="RP| Команди", callback_data="com1"))
builder1.add(types.InlineKeyboardButton(text="Mod| Команди", callback_data="com2"))
if callback.data == "com1": await bot.edit_message_text(chat_id=callback.from_user.id, message_id=callback.message.message_id, text=text1,reply_markup=builder.as_markup())
if callback.data == "com2": await bot.edit_message_text(chat_id=callback.from_user.id, message_id=callback.message.message_id, text=text2,parse_mode="html",reply_markup=builder.as_markup())
if callback.data == "return": await bot.edit_message_text(chat_id=callback.from_user.id, message_id=callback.message.message_id, text="Привіт! Це меню Баби Шури!\n\nОберіть потрібну вам кнопку:",parse_mode="html",reply_markup=builder1.as_markup())```
Ответы (1 шт):
Автор решения: Gawain
→ Ссылка
Потому что вы пытаетесь изменить сообщение в личном чате, когда указываете
chat_id=callback.from_user.id
Укажите
chat_id=callback.message.chat.id
и все будет работать
if callback.data == "com1": await bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.message_id, text=text1,reply_markup=builder.as_markup())
if callback.data == "com2": await bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.message_id, text=text2,parse_mode="html",reply_markup=builder.as_markup())
if callback.data == "return": await bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.message_id, text="Привіт! Це меню Баби Шури!\n\nОберіть потрібну вам кнопку:",parse_mode="html",reply_markup=builder1.as_markup())
P.S. Лучше не обрабатывать все коллбеки в одной функции, а сделать отдельную функцию для каждого коллбека
@dp.callback_query(lambda call: call.data == "com1")
async def callbacks(callback: types.CallbackQuery):
...
@dp.callback_query(lambda call: call.data == "com2")
async def callbacks(callback: types.CallbackQuery):
...