所以,我正在制作一个机器人,我想知道是否有办法使用如下命令重新启动它:
p!restart
我确实喜欢一个命令:
p!shutdown
但不知道如何重新启动,对于那些来这里寻找关机命令的人来说:
async def shutdown(ctx):
id = str(ctx.author.id)
if id == 'your_id_here':
await ctx.send('Shutting down the bot!')
await ctx.bot.logout()
else:
await ctx.send("You dont have sufficient permmisions to perform this action!")```
ctx.bot.logout()
仅注销您的机器人。
如果你想完全重新启动你的程序,我就是这样做的:
import sys
import os
from discord.ext import commands
bot = commands.Bot
def restart_bot():
os.execv(sys.executable, ['python'] + sys.argv)
@bot.command(name= 'restart')
async def restart(ctx):
await ctx.send("Restarting bot...")
restart_bot()
bot.run(os.getenv('TOKEN'))
为了防止滥用此命令,只需在命令中添加一个“if”语句来检查
ctx.author.id
以查看用户是否有权执行该命令。不过看起来你确实这么做了。
import discord
from discord.ext import commands
import os
client = commands.Bot(command_prefix='>')
@client.event
async def on_ready():
print("Log : "+str(client.user))
@client.command()
async def rs(ctx):
await ctx.send("Restarting...")
os.startfile(__file__)
os._exit(1)
client.run("token")
或者你可以做
ctx.bot.close()
,根据你的主机重新启动你的机器人,idk
@app_commands.command(name="restart", description="Restart the discord bot.")
@app_commands.checks.has_permissions(manage_guild=True)
async def restart(self, interaction):
if is_owner(interaction.user.id):
log.info(f"\n"
f"{interaction.user} has restarted the bot.\n"
f"{interaction.guild.id}\n")
await self.responses.success(self, message="Restarting Bot", interaction=interaction)
os.execv(sys.executable, ["python"] + sys.argv)