Задать вопрос
@ilya_avdonin

Почему не работает юзербот для парсинга сообщений?

from pyrogram import Client, filters, utils
import asyncio


def get_peer_type_new(peer_id: int):
    peer_id_str = str(peer_id)
    if not peer_id_str.startswith("-"):
        return "user"
    elif peer_id_str.startswith("-100"):
        return "channel"
    else:
        return "chat"

utils.get_peer_type = get_peer_type_new

APP_ID = 3475734954
API_HASH = 'hfudghfdkg'
SESSION_NAME = 'testt'

app = Client(SESSION_NAME, APP_ID, API_HASH)

@app.on_message(filters.text & (filters.channel | filters.group | filters.private))
async def channel_handler(client, message):
    print('есть контакт')
    try:
        await client.send_message('@durov_imenie', message.text)
        print("Сообщение переслано успешно")
    except Exception as e:
        print(f"Ошибка при пересылке: {e}")

async def main():
    async with app:
        me = await app.get_me()
        print(f"Бот запущен как {me.first_name} (@{me.username})")
        print("Ожидаем новые посты...")
        while True:
            await asyncio.sleep(1)

if name == "main":
    asyncio.run(main())

никак не реагирует на любого рода сообщения, как будто не видит их. пробовал разные аккаунты, не помогает
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    1C-разработчик
    8 месяцев
    Далее
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Alan_Ry
У тебя неправильно написано условие запуска

Должно быть:

if __name__ == "__main__":
asyncio.run(main())

Из-за этого твой скрипт вообще не запускает main(), и юзербот не стартует.

Не нужно переписывать utils.get_peer_type — это ломает Pyrogram

Ты делаешь:
utils.get_peer_type = get_peer_type_new

Это вмешательство в самые базовые внутренние функции Pyrogram.
В результате Pyrogram неверно определяет тип чата → он не подключается к нужным обновлениям → обработчик сообщений не вызывается.
Удали это полностью. Оно не нужно.

✔️ Исправленный рабочий код

from pyrogram import Client, filters

APP_ID = 3475734954
API_HASH = "hfudghfdkg"
SESSION_NAME = "testt"

app = Client(SESSION_NAME, APP_ID, API_HASH)

@app.on_message(filters.text)
async def handler(client, message):
print("есть контакт:", message.text)
try:
await client.send_message("@durov_imenie", message.text)
print("Сообщение переслано успешно")
except Exception as e:
print("Ошибка:", e)

if __name__ == "__main__":
app.run()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы