擅长:python、mysql、java
<p>您必须添加某种全局检查,并且您有许多选项来执行此操作。例如,您可以在<code>on_command</code>事件中处理检查,或者甚至在bot级别使用<code>bot.check</code>装饰器处理检查</p>
<p>然后,您将实现一个具有适当权限的命令,该命令允许您启动/停止bot活动。例如,我只允许自己运行控制命令</p>
<p>以下是我设计创意的好方法:</p>
<pre><code>from discord.ext import commands
bot = commands.Bot(command_prefix = "!")
is_active = True
@bot.check
async def isactive(ctx):
if not is_active:
await ctx.send(embed=a_nice_embed_showing_inactive_status)
return
return True
# the following essentially creates your own decorator to wrap control commands like start and stop.
def isme():
def control_command(ctx):
return ctx.author.id == my_id
return commands.check(control_command)
@bot.command()
@isme()
async def stop(ctx):
if not is_active:
await ctx.send("The bot is already active!")
else:
is_active = False
await ctx.send("The bot is active now.")
@bot.command()
@isme
async def start(ctx):
# exact opposite of stop
@bot.command()
async def random_command(ctx):
# this will fail if not is_active
bot.run("token")
</code></pre>