Python aiogram реализация "тех поддержки"

Рейтинг: 0Ответов: 1Опубликовано: 10.07.2023

Делаю телеграм бота, не могу реализовать "тех поддержку" в телеграмме. Замысел такой: если пользователь не смог получить всю инфу из самого бота, я через фильтр начинаю ловить сообщения , после этого все сообщения написанные боту отправляются в тг чат, где его участники через reply отвечают и бот пересылает эти сообщения уже в чат пользователя.

И вот тут начинаются проблемы, он ругается на chat_id группы.Причем я пробовал в обратную сторону, чтобы я писал в группу, а он мне в личку. Все работает как швейцарские часы, но в моем случае такая ошибка. И да, я вставил чат id из url в телеграм веб. И через getUpdates проверял id совпадает, но почему то не работает.Пробовал искать здесь похожий случай , но есть только это Как сделать обработчик ошибок в aiogram боте?, но тут люди делают рассылку через бота, пользователь может залочить и у кого обработчика ошибки не было.

В моем случае приватный чат из модеров , бот с правами админа.Прошу не ругайтесь( UPD:посидел еще над проблемой и пришел к тому что я не правильно передаю chat_id.Решил поэксперементировать , через простой метод send_message, и бот выдает ту же ошибку.chat_id передаю с типом данных integer, в соответсвии с https://core.telegram.org/bots/api#forwardmessage Поискал еще нашел какую-то статью на habr , предлагают передавать chat_id в типе string и еще со знаком минус, тобишь example:chat_id = "-12345678".Но в моем случает тоже не работает.

Вот кусок кода

async def answer(message:types.Message):
    await message.answer("Сообщение отправлено! Ожидайте ответа от спеца.")
    await bot.forward_message(chat_id=<GROUP ID>, from_chat_id=message.chat.id, message_id=message.message_id)
def register_handlers_client(dp:Dispatcher):
    dp.register_message_handler(answer,lambda message: "консультация" in message.text)
Task exception was never retrieved
future: <Task finished name='Task-9' coro=<Dispatcher._process_polling_updates() done, defined at /home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/dispatcher/dispatcher.py:407> exception=ChatNotFound('Chat not found')>
Traceback (most recent call last):
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/dispatcher/dispatcher.py", line 415, in _process_polling_updates
    for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/dispatcher/dispatcher.py", line 235, in process_updates
    return await asyncio.gather(*tasks)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/dispatcher/handler.py", line 117, in notify
    response = await handler_obj.handler(*args, **partial_data)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/dispatcher/dispatcher.py", line 256, in process_update
    return await self.message_handlers.notify(update.message)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/dispatcher/handler.py", line 117, in notify
    response = await handler_obj.handler(*args, **partial_data)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/salaga/Рабочий стол/jeka/handlers/client.py", line 40, in answer
    await bot.forward_message(chat_id=1783136075, from_chat_id=message.chat.id, message_id=message.message_id)
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/bot/bot.py", line 394, in forward_message
    result = await self.request(api.Methods.FORWARD_MESSAGE, payload)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/bot/base.py", line 236, in request
    return await api.make_request(await self.get_session(), self.server, self.__token, method, data, files,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/bot/api.py", line 140, in make_request
    return check_result(method, response.content_type, response.status, await response.text())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/bot/api.py", line 115, in check_result
    exceptions.BadRequest.detect(description)
  File "/home/salaga/Рабочий стол/telegram/venv/lib/python3.11/site-packages/aiogram/utils/exceptions.py", line 140, in detect
    raise err(cls.text or description)
aiogram.utils.exceptions.ChatNotFound: Chat not found

Ответы

▲ 1

Нашел решение на eng сегменте stackoverflow , оказывается когда передаёте chat_id с типом integer вы должны передавать + "-100".exp(КАК НЕ ПРАВИЛЬНО)=1234567 , exp(КАК ПРАВИЛЬНО) = -1001234567 Самое интересное ни в документации Telegram API , ни aiogram об этом ни слова. Ссылаюсь на этот матерал https://stackoverflow.com/questions/72463332/cant-send-message-in-aiogram