Discord.py 重启命令

问题描述 投票:0回答:5

所以,我正在制作一个机器人,我想知道是否有办法使用如下命令重新启动它:

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!")```
python discord.py restart shutdown
5个回答
5
投票

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
以查看用户是否有权执行该命令。不过看起来你确实这么做了。


2
投票

Client.logout()

这只会让您注销,然后您可以使用以下命令再次登录 Client.login()

这就是重启机器人所需要的


0
投票
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")

0
投票

或者你可以做

ctx.bot.close()
,根据你的主机重新启动你的机器人,idk


0
投票
@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)
© www.soinside.com 2019 - 2024. All rights reserved.