Kam*_*dov 0 python python-3.x telegram python-telegram-bot telegram-bot
是否可以删除我与机器人聊天的所有聊天记录(消息)。
所以控制台版本是这样的:
import os
os.sys("clear") - if Linux
os.sys("cls") - if Windows
Run Code Online (Sandbox Code Playgroud)
我想要的只是使用 bot 删除聊天中的所有消息。
def deleteChat(message):
#delete chat code
Run Code Online (Sandbox Code Playgroud)
小智 6
首先,如果您想使用机器人删除历史记录,您应该保存消息 ID。否则,您可以使用 userbot(使用用户帐户)来清除历史记录。您可以遍历所有聊天消息并获取它们的 ID,然后一次删除 100 个。
警告:由于 Telegram 的限制,机器人和 BotAPI 无法迭代聊天的消息历史记录。因此,您应该使用 MTProto API 框架,并具有如前所述的用户帐户。
首先,热解图需要图书馆这样做(也可以使用募捐活动),和实例的客户端,那么你可以添加一个处理程序,或使用启动客户端与关键字。然后通过迭代聊天获取所有消息 ID,并将它们保存在列表中。最后,使用delete_messages Client 方法删除它们:
from pyrogram import Client, filters
app = Client(
"filename", # Will create a file named filename.session which will contain userbot "cache"
# You could also change "filename" to ":memory:" for better performance as it will write userbot session in ram
api_id=0, # You can get api_hash and api_id by creating an app on
api_hash="", # my.telegram.org/apps (needed if you use MTProto instead of BotAPI)
)
@app.on_message(filters.group & filters.command("delall"))
def func(app, message):
ids = [msg.message_id for msg in app.iter_history(message.chat.id)]
chunk_size = 100
# Splitting the list in chunks of 100 messages ids
ids = [ids[i:i + chunk_size] for i in range(0, len(ids), chunk_size)]
for m_ids in ids:
try:
app.delete_messages(
message.chat.id,
m_ids
)
except Exception as e:
app.send_message(
message.chat.id,
f"An error occurred: {e}"
)
break # Excepts errors given by Telegram, like floodwaits
app.run()
Run Code Online (Sandbox Code Playgroud)
启动 userbot 后,将其添加到组中,然后发送“/delall”。如果 userbot 具有删除消息权限,它将开始删除所有消息。
有关热图文档,请参阅https://docs.pyrogram.org。
(但是,您不应该在终端中打印所有消息,以避免 VPS 过载)
清除控制台的正确代码是这样的:
import os
def clear():
os.system('cls' if os.name=='nt' else 'clear')
Run Code Online (Sandbox Code Playgroud)
PS 您可以使用相同的代码,将 bot_token="" 参数添加到客户端,并删除 iter_history 部分,如果您有消息 ID,则可以使用机器人删除消息。
如果将来您希望接收来自组的消息并打印它们,但您没有收到消息更新,请将机器人添加为组中的管理员或在BotFather 中禁用机器人隐私模式。
为了获得更好的热图性能,您应该安装tgcrypto库,并使用async 版本(未来热图将默认为 async。此代码适用于 0.18.x 版本)。
这是删除聊天记录的众多方法之一,我写这个是为了简单起见。
| 归档时间: |
|
| 查看次数: |
8442 次 |
| 最近记录: |