如何删除 discord bot 的最新消息? - Discord.py
How do you delete the discord bot's most recent message? - Discord.py
我尝试执行清除命令,这是我的代码:
@bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def purge(ctx, limit: int):
await ctx.channel.purge(limit=limit)
await ctx.message.delete()
await ctx.send(f'Deleted {limit} messages. Done by {ctx.author.mention}.')
await asyncio.sleep(2)
await bot.delete.message.most_recent()
但是当我尝试 运行 命令时,它会删除消息,但在尝试删除消息时会出现此错误:
Ignoring exception in command purge:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "main.py", line 312, in purge
await ctx.message.delete()
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/message.py", line 1023, in delete
await self._state.http.delete_message(self.channel.id, self.id)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/http.py", line 250, in request
raise NotFound(r, data)
discord.errors.NotFound: 404 Not Found (error code: 10008): Unknown Message
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 939, in invoke
await ctx.command.invoke(ctx)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 863, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NotFound: 404 Not Found (error code: 10008): Unknown Message
有什么帮助吗?
您可以试试这个:
@bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def purge(ctx, limit: int):
await ctx.channel.purge(limit=limit)
await ctx.message.delete()
await ctx.send(f'Deleted {limit} messages. Done by {ctx.author.mention}.', delete_after = 2)
delete_after
会在特定秒数后删除机器人发送的消息。
迟到的答案,但我认为这可能对您有所帮助。使用您的代码,您所要做的就是将您刚刚发送的消息保存到一个变量中,然后删除该消息。
@bot.command()
@commands.has_permissions(administrator=True)
async def purge(ctx, limit: int):
await ctx.channel.purge(limit=limit)
await ctx.message.delete()
message = await ctx.send(f'Deleted {limit} messages. Done by {ctx.author.mention}.')
await asyncio.sleep(2)
await message.delete()
我尝试执行清除命令,这是我的代码:
@bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def purge(ctx, limit: int):
await ctx.channel.purge(limit=limit)
await ctx.message.delete()
await ctx.send(f'Deleted {limit} messages. Done by {ctx.author.mention}.')
await asyncio.sleep(2)
await bot.delete.message.most_recent()
但是当我尝试 运行 命令时,它会删除消息,但在尝试删除消息时会出现此错误:
Ignoring exception in command purge:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "main.py", line 312, in purge
await ctx.message.delete()
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/message.py", line 1023, in delete
await self._state.http.delete_message(self.channel.id, self.id)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/http.py", line 250, in request
raise NotFound(r, data)
discord.errors.NotFound: 404 Not Found (error code: 10008): Unknown Message
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 939, in invoke
await ctx.command.invoke(ctx)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 863, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NotFound: 404 Not Found (error code: 10008): Unknown Message
有什么帮助吗?
您可以试试这个:
@bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def purge(ctx, limit: int):
await ctx.channel.purge(limit=limit)
await ctx.message.delete()
await ctx.send(f'Deleted {limit} messages. Done by {ctx.author.mention}.', delete_after = 2)
delete_after
会在特定秒数后删除机器人发送的消息。
迟到的答案,但我认为这可能对您有所帮助。使用您的代码,您所要做的就是将您刚刚发送的消息保存到一个变量中,然后删除该消息。
@bot.command()
@commands.has_permissions(administrator=True)
async def purge(ctx, limit: int):
await ctx.channel.purge(limit=limit)
await ctx.message.delete()
message = await ctx.send(f'Deleted {limit} messages. Done by {ctx.author.mention}.')
await asyncio.sleep(2)
await message.delete()