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

Ошибка в коде, не понимаю почему?

Написал код поповоду телеграмма. Но выдавало ошибку, в интернете нашёл готовое решение, но всё равно ошибка туже. Помогите пожалуйста.

from pyrogram import Client  # телеграм клиент
import shelve  # запись информации в файл
import random  # для выбора случайного элеменита из списка
import time  # для выбора случайного элеменита из списка


api_id = 11456233
api_hash = 'c4e0034185146f0ada491a2b7f287512'
phone_number = '+7...'  # телефонный номер аккаунта в телеграме
PUBLIC = 'testnovo'  # паблик
# Варианты текстов сообщений
TEXTS = [
    'Круто !',
    'тоже так хочу ',
    '5 баллов ',
]
COMMENT_EVERY_N = 1  # комментируем каждое N собщение
                     # если равно 1, комментируем каждое сообщение
                     # если равно 3, комментируем каждое третье
                     # если равно 5, комментируем каждое пятое ... итд

# список обработанных сообщений
processed_messages = shelve.open('processed_messages.db',  # имя файла, куда писать
                                 writeback=True)

# создаем клиент телеграма
app = Client("python_cyberpunk", api_id, api_hash,
             phone_number=phone_number)

with app:
    public = app.get_chat(PUBLIC)  # ищем паблик по нику
    chat = public.linked_chat  # связанный чат обсуждений паблика
    
    while True:
        for msg in app.get_history(chat.id, limit=100):
            # фильтруем только авторепосты из паблика
            if (msg.from_user is None  # если сообщение не имеет автора
                    # и это репост из паблика (проверка по id)
                    and msg.forward_from_chat.id == public.id):
                if msg.forward_from_message_id % COMMENT_EVERY_N != 0:
                    print(f'Пропускаем message_id={msg.message_id},'
                        f' так как комментируе каждое {COMMENT_EVERY_N}')
                    continue
                # проверяем, есть ли в списке обработанных сообщений этот айди
                # чтобы не комментировать по несколько раз один пост
                if str(msg.forward_from_message_id) in processed_messages:
                    print(f'Пропускаем уже обработанное message_id={msg.message_id}')
                    continue
                # пишем в список обработанных айди этого сообщения
                processed_messages[str(msg.forward_from_message_id)] = True

                print(f'Обработка message_id={msg.message_id}')

                text = random.choice(TEXTS)  # выбираем случайный текст из списка
                app.send_message(chat.id, text,  # отправляем текст в чат
                                reply_to_message_id=msg.message_id)  # как ответ на сообщение с постом
                
                # для того, чтоб не оставлять больше одного коммента за 5 минут
                break  # выходим из перебора сообщений, если оставили коммент

        print('Ставим на паузу')
        time.sleep(60 * 5)


Ошибка:
File "C:/Users/maksi/AppData/Local/Programs/Python/Python310-32/gd.py", line 36, in <module>
    for msg in app.get_history(chat.id, limit=100):
AttributeError: 'Client' object has no attribute 'get_history'. Did you mean: 'get_chat_history'?
  • Вопрос задан
  • 480 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

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