如何使用Discord.py Bot移除特定消息中的指定链接预览?
解决Discord.py Bot移除已发消息中Twitter链接预览的问题
核心思路
Discord里用<>包裹链接会阻止生成预览,我们可以通过编辑原消息的方式,把消息内的Twitter链接替换为带<>的格式,不用删除重发。
实现步骤与代码示例
- 定位目标消息:通过消息ID、频道历史检索等方式找到需要修改的消息。
- 替换链接格式:用正则匹配消息里的Twitter/x链接,改成
<链接>的格式。 - 编辑原消息:调用
message.edit()更新内容,Discord会自动移除链接预览。
import discord import re # 假设已完成Bot客户端初始化 @client.command() async def remove_twitter_preview(ctx, message_id: int): try: # 获取目标消息 message = await ctx.channel.fetch_message(message_id) # 匹配Twitter/x链接(兼容twitter.com和x.com域名) modified_content = re.sub( r'(https?://(twitter|x)\.com/\S+)', r'<\1>', message.content ) # 执行消息编辑 await message.edit(content=modified_content) await ctx.send("已成功移除Twitter链接预览") except discord.NotFound: await ctx.send("未找到指定消息") except discord.Forbidden: await ctx.send("Bot无权限编辑该消息")
权限说明
- 编辑Bot自己发的消息:不需要额外权限。
- 编辑其他用户发的消息:Bot需要拥有
manage_messages权限。
注意事项
- 正则表达式可根据需求调整,确保覆盖所有可能的Twitter/x链接格式。
- 编辑消息后,原消息的发送时间不会改变,仅内容更新,完全避免删除重发的繁琐操作。
内容的提问来源于stack exchange,提问作者Jrod
相关产品推荐
相关产品推荐

