Есть код для бота в тг. Бот должен парсить контект из нужных каналов и чатов, после отправлять в 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
Но вылазит каждый раз ошибка. Пытался в 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