发送消息确认机器人有 deleted/cleared 条消息
Sending message confirming bot have deleted/cleared messages
我正在创建一个清除命令,我希望机器人在清除后确认它已清除消息。
我的代码:
@client.command(aliases=["del","delete","cl","clearmessages","deletemessages","deletemessage","clearmessage","cm"])
async def clear(ctx, amount=5):
if ctx.message.author.guild_permissions.manage_messages:
await ctx.channel.purge(limit=amount+1)
msg = await ctx.send(f"{amount} messages have been deleted!")
import asyncio
asyncio.sleep(15)
await msg.delete()
else:
await ctx.send("Your don't have manage messages perms!")
我也希望机器人在一段时间后删除自己的消息
编写此命令的更好方法是:
@client.command(aliases=['put alternative names here'])
@commands.has_permissions(manage_messages=True)
async def clear(ctx, amount=5):
try:
await ctx.channel.purge(limit=amount+1)
await ctx.send(f"{amount} messages have been deleted!", delete_after=5)
except:
await ctx.send("Your don't have manage messages perms!")
注意 - 您将需要以下导入语句:
from discord.ext import commands
编辑:您可以摆脱 try、except 循环并改用错误处理程序
@client.event
async def on_command_error(ctx, error):
error = getattr(error, 'original', error)
if isinstance(error, commands.MissingPermissions):
await ctx.send("You don't have the required perms to carry out this command")
如果您希望它是特定于命令的,以便您可以添加唯一的错误消息:
@client.event
async def on_command_error(ctx, error):
error = getattr(error, 'original', error)
if isinstance(error, commands.MissingPermissions):
if ctx.command.name == "clear":
await ctx.send("You don't have manage messages perm")
编辑 #2:添加限制
async def clear(ctx, amount: int):
if amount <= 500:
await ctx.channel.purge(limit=amount + 1)
await ctx.send(f"{amount} messages have been deleted!", delete_after=5)
else:
#error message
我正在创建一个清除命令,我希望机器人在清除后确认它已清除消息。
我的代码:
@client.command(aliases=["del","delete","cl","clearmessages","deletemessages","deletemessage","clearmessage","cm"])
async def clear(ctx, amount=5):
if ctx.message.author.guild_permissions.manage_messages:
await ctx.channel.purge(limit=amount+1)
msg = await ctx.send(f"{amount} messages have been deleted!")
import asyncio
asyncio.sleep(15)
await msg.delete()
else:
await ctx.send("Your don't have manage messages perms!")
我也希望机器人在一段时间后删除自己的消息
编写此命令的更好方法是:
@client.command(aliases=['put alternative names here'])
@commands.has_permissions(manage_messages=True)
async def clear(ctx, amount=5):
try:
await ctx.channel.purge(limit=amount+1)
await ctx.send(f"{amount} messages have been deleted!", delete_after=5)
except:
await ctx.send("Your don't have manage messages perms!")
注意 - 您将需要以下导入语句:
from discord.ext import commands
编辑:您可以摆脱 try、except 循环并改用错误处理程序
@client.event
async def on_command_error(ctx, error):
error = getattr(error, 'original', error)
if isinstance(error, commands.MissingPermissions):
await ctx.send("You don't have the required perms to carry out this command")
如果您希望它是特定于命令的,以便您可以添加唯一的错误消息:
@client.event
async def on_command_error(ctx, error):
error = getattr(error, 'original', error)
if isinstance(error, commands.MissingPermissions):
if ctx.command.name == "clear":
await ctx.send("You don't have manage messages perm")
编辑 #2:添加限制
async def clear(ctx, amount: int):
if amount <= 500:
await ctx.channel.purge(limit=amount + 1)
await ctx.send(f"{amount} messages have been deleted!", delete_after=5)
else:
#error message