@SerjMarkby

Некорректно работает метод search_messages в pyrogram. Как исправить?

Столкнулся с проблемой при работе с pyrogram.

Для начала код:

from pyrogram import Client, filters
from settings import api_id, api_hash, chat_id


app = Client("Deleted_bot")


async def deleted_msg(msg_id):
    await app.delete_messages(chat_id, msg_id)


async def get_msg(user_id, msg):
    count = 0
    msg_list = app.search_messages(chat_id=chat_id, query=msg, from_user=user_id)
    async for msg in msg_list:
        count += 1
        msg_id = msg.id
        if count > 1:
            try:
                await deleted_msg(msg_id)
            except Exception as e:
                print(e)
        else:
            pass


@app.on_message(filters.chat(chats=chat_id))
async def get_post(client, message):

    user_id = message.from_user.id
    msg_txt = message.text
    await get_msg(user_id, msg_txt)


app.run()


Описание. Есть группа и задача -- удалять повторяющиеся(старые) сообщения от юзеров.

Что имеем:
1) Функция get_post принимающая на вход сообщение для проверки
2) Функция get_msg, которая должна возвращать список сообщений юзера, если они совпадают по тексту с 1 функцией
3) Функция удаляющая сообщение

В чем собственно проблема. Если перезапустить бот, он отрабатывает корректно. Но с каждым последующим сообщением, функция 2 перестает работать. Т.е. бот тупо не видит новые сообщения или не находит их.
Я не могу понять причину, т.к. задача в принципе примитивная и асинхронные функции должны отрабатывать. Но работают не так как хотелось бы

Ничего подобного с данной библиотекой ранее не возникало. Возможно я чего то не знаю. Нужна помощь
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@SerjMarkby Автор вопроса
Если вкратце - определил, что проблема не в коде. Проблема в том что сервер тг или сама библотека тупит.
Решение выбрал не самое лучшее, но рабочее.
А именно, вместо search_messages использовал get_chat_history. Программа при этом выполняет запрос всех сообщений и находит в них нужного юзера и его сообщения.
Не то, что я хотел, но по другому не работает. К сожалению. Также убедился в этом у модераторов pyrogram
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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