Нужна помощь по ошибке

gdidz

Новичок
Пользователь
Дек 29, 2023
1
0
1
Есть код для бота в тг. Бот должен парсить контект из нужных каналов и чатов, после отправлять в 1 чат для проверки и одобрения поста и после одобрения отправлять в нужный нам канал.
Но вылазит каждый раз ошибка. Пытался в chatGPT решить вопрос, не получилось.
Может вы можете помочь.
на компе win7 phython 3.8

сам код
from pyrogram import Client
from pyrogram.handlers import MessageHandler
from pyrogram import filters
import shelve

db = shelve.open('data.db', writeback=True)

API_ID = .........(тут всё правильно)
API_HASH = 'Тут тоже всё правильно'

PRIVATE_PUBLIC = 'gdidzb'
PUBLIC_PUBLIC = 'wbskidon4uk'
SOURCE_PUBLICS = [
'wbsaless',
'wildberies_ozon',
'wbsalehunt',
'wbsale_n',
'wbskidki777',
'wbskidkaOZ',
'WBskidonchikIN',
]
PHONE_NUMBER = '+375333625932'

app = Client("cyberpunk", api_id=API_ID, api_hash=API_HASH, phone_number=PHONE_NUMBER)

@app.on_message(filters.chat(SOURCE_PUBLICS))
def new_channel_post(client, message):
post_id = add_post_to_db(message)

message.forward(PRIVATE_PUBLIC)

client.send_message(PRIVATE_PUBLIC, post_id)

def add_post_to_db(message):
try:
new_id = max(int(k) for k in db.keys() if k.isdigit()) + 1
except:
new_id = 1

db[str(new_id)] = {
'username': message.chat.username,
'message_id': message.message_id,
}
return new_id

@app.on_message(filters.chat(PRIVATE_PUBLIC) & filters.regex(r'\d+\+'))
def post_request(client, message):
post_id = str(message.text).strip('+')
post = db.get(post_id)
if post is None:
client.send_message(PRIVATE_PUBLIC, 'ERROR NO POST ID IN DB')
return

try:
msg = client.get_messages(post['username'], post['message_id'])
msg.copy(PUBLIC_PUBLIC)
client.send_message(PRIVATE_PUBLIC, f'SUCCESS REPOST!')
except Exception as e:
client.send_message(PRIVATE_PUBLIC, f'ERROR {e}')

if __name__ == '__main__':
print('Attempt to run telegrabber')
app.run()



И соответственно сама ошибка
AttributeError: 'Message' object has no attribute 'message_id'
'Message' object has no attribute 'message_id'
Traceback (most recent call last):
File "C:\Program Files\Python38\lib\site-packages\pyrogram\dispatcher.py", line 242, in handler_worker
await self.loop.run_in_executor(
File "C:\Program Files\Python38\lib\concurrent\futures\thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "C:/Program Files/Python38/т1.py", line 28, in new_channel_post
post_id = add_post_to_db(message)
File "C:/Program Files/Python38/т1.py", line 42, in add_post_to_db
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
374
108
43
from pyrogram import Client
from pyrogram.handlers import MessageHandler
from pyrogram import filters
import shelve

db = shelve.open('data.db', writeback=True)

API_ID = .........(тут всё правильно)
API_HASH = 'Тут тоже всё правильно'

PRIVATE_PUBLIC = 'gdidzb'
PUBLIC_PUBLIC = 'wbskidon4uk'
SOURCE_PUBLICS = [
'wbsaless',
'wildberies_ozon',
'wbsalehunt',
'wbsale_n',
'wbskidki777',
'wbskidkaOZ',
'WBskidonchikIN',
]
PHONE_NUMBER = '+375333625932'

app = Client("cyberpunk", api_id=API_ID, api_hash=API_HASH, phone_number=PHONE_NUMBER)


@app.on_message(filters.chat(SOURCE_PUBLICS))
def new_channel_post(client, message):
post_id = add_post_to_db(message)
message.forward(PRIVATE_PUBLIC)
client.send_message(PRIVATE_PUBLIC, post_id)


def add_post_to_db(message):
try:
new_id = max(int(k) for k in db.keys() if k.isdigit()) + 1
except:
new_id = 1
db[str(new_id)] = {
'username': message.chat.username,
'message_id': message.id,
}
return new_id


@app.on_message(filters.chat(PRIVATE_PUBLIC) & filters.regex(r'\d+\+'))
def post_request(client, message):
post_id = str(message.text).strip('+')
post = db.get(post_id)
if post is None:
client.send_message(PRIVATE_PUBLIC, 'ERROR NO POST ID IN DB')
return

try:
msg = client.get_messages(post['username'], post['message_id'])
msg.copy(PUBLIC_PUBLIC)
client.send_message(PRIVATE_PUBLIC, f'SUCCESS REPOST!')
except Exception as e:
client.send_message(PRIVATE_PUBLIC, f'ERROR {e}')


if __name__ == '__main__':
print('Attempt to run telegrabber')
app.run()
 
  • Мне нравится
Реакции: Vershitel_sudeb и regnor

Форум IT Специалистов