首页 > 解决方案 > Telethon 在转发时重复消息

问题描述

我的脚本正在听一些特定关键字的聊天。当有匹配时,它会发送它与报告聊天。但是当我的脚本在远程服务器上运行时,我有一个在报告聊天中复制消息的错误。而且我无法在本地机器上重新创建该错误。

client = TelegramClient('anon', api_id=API_ID, api_hash=API_HASH)
chats = []
for t in task_list:
    chats.extend(t['chats_to_listen'])

message_ids = []


@client.on(events.NewMessage(chats=chats))
async def handle(event):
    m_obj = event.message
    m = event.message.to_dict()

    print('=== if id in sents ids', m['id'] in message_ids)
    if m['id'] in message_ids:
        print('=== DUPLICATE', m)
    else:
        for task in task_list:
            for key in task['keywords']:

                if key in m['message']:
                    print('=== message', m['message'])
                    chat_match = set(task['chats_to_listen']) & set(m['to_id'].values())
                    if chat_match:
                        chat_for_report_name = task['chat_to_report']
                        # await m_obj.forward_to(chat_for_report_name)
                        await client.forward_messages(chat_for_report_name, m_obj, list(chat_match)[0])

                        print(f'=== MESSAGE {m["id"]} SENT!')
                        message_ids.append(m['id'])
                        # time.sleep(2)
                        break
            else:
                continue
            break

        print('=== IDS SENT', message_ids)


print('Running')
client.start()
client.run_until_disconnected()
print('Stopped')

我也试过forward_to方法,结果一样。

任何建议我都会很高兴。谢谢。

标签: pythonduplicatestelethon

解决方案


忘记在开发服务器上关闭我的应用程序:(


推荐阅读