You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用discord bot封禁用户时如何保留被封禁用户的历史消息?

Discord自研Bot封禁用户时保留其历史消息的解决方案

问题背景

使用自研Discord Bot执行封禁用户操作时,系统会自动删除被封禁用户的所有近期消息,需求是找到保留这些消息的实现方法。

原有封禁命令代码

@bot.command()
@commands.has_permissions(administrator=True)
async def ban(ctx, user: discord.User, *, reason = None):
  ban = await ctx.reply(embed = discord.Embed(description = f'{loading_emoji}  Banning {user.mention} from `server1` and `server2`...', color = 0x00BF23), mention_author=True)
  s1 = await bot.fetch_guild(server1)
  s2 = await bot.fetch_guild(server2)
  await s1.ban(user, reason = reason)
  await s2.ban(user, reason = reason)
  await asyncio.sleep(0.9)
  await ban.edit(embed = discord.Embed(title = 'Success!', description = f'{shield_emoji}  Banned {user.mention} from `server1` and `server2`!', timestamp = datetime.utcnow(), color = 0x00BF23), mention_author=True)

解决方案

Discord Python库中,guild.ban()方法默认会删除被封禁用户的近期消息,要保留消息只需要给该方法添加delete_message_days=0参数即可,参数值为0代表不删除任何历史消息。
需要将代码中两处调用ban方法的位置都补充该参数:

  • 原server1封禁代码:await s1.ban(user, reason = reason)
    修改后为:await s1.ban(user, reason = reason, delete_message_days=0)
  • 原server2封禁代码:await s2.ban(user, reason = reason)
    修改后为:await s2.ban(user, reason = reason, delete_message_days=0)

修改后完整代码

@bot.command()
@commands.has_permissions(administrator=True)
async def ban(ctx, user: discord.User, *, reason = None):
  ban = await ctx.reply(embed = discord.Embed(description = f'{loading_emoji}  Banning {user.mention} from `server1` and `server2`...', color = 0x00BF23), mention_author=True)
  s1 = await bot.fetch_guild(server1)
  s2 = await bot.fetch_guild(server2)
  # 添加delete_message_days=0参数保留用户所有历史消息
  await s1.ban(user, reason = reason, delete_message_days=0)
  await s2.ban(user, reason = reason, delete_message_days=0)
  await asyncio.sleep(0.9)
  await ban.edit(embed = discord.Embed(title = 'Success!', description = f'{shield_emoji}  Banned {user.mention} from `server1` and `server2`!', timestamp = datetime.utcnow(), color = 0x00BF23), mention_author=True)

内容的提问来源于stack exchange,提问作者Roberto G.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:54:00