前缀更改后重新加载 discord bot (Discord.py)
Reload discord bot after prefix change (Discord.py)
问题是我想用命令动态更改我的前缀。前缀在 json 文件中更新,但唯一的问题是机器人需要重新加载才能接受新前缀。所以我需要一种方法让机器人在 config.json.
更新后立即读取新前缀
JSON 文件:
"command_prefix": "."
UPDATE PREFIX CMD:(该命令在我的核心 cog 中)
# PREFIX CHANGE COMMAND
@commands.group(name="prefix", invoke_without_command=True)
@commands.has_permissions(administrator=True)
async def prefix(self, ctx):
current_prefix = get_config_file("command_prefix")
await ctx.channel.send(f'Current prefix is: **{current_prefix}** \n If you want to change the prefix use subcommand: _set_')
@prefix.command(name="set")
@commands.has_permissions(administrator=True)
async def set(self, ctx, mode):
mode != None
with open('config.json', 'r') as f:
config = json.load(f)
config["command_prefix"] = mode
with open('config.json', 'w') as f:
json.dump(config, f, indent=4)
f.close()
await ctx.channel.send(f'Prefix has been changed to `{mode}`')
当您第一次初始化机器人时,它会创建一个前缀并仅在您重新创建机器人之前使用该前缀。如果您希望机器人具有不同的前缀或对其进行更新,则需要对 command_prefix
参数进行回调。
首先创建 get_prefix
函数。
async def get_prefix(bot, message): # you can also do it by guild with message argument
return get_config_file("prefix_command")
然后在 Bot 实例中
bot = commands.Bot(command_prefix=get_prefix)
注意:这些都将位于您创建机器人的主文件中。每次更新前缀都会立即改变。
问题是我想用命令动态更改我的前缀。前缀在 json 文件中更新,但唯一的问题是机器人需要重新加载才能接受新前缀。所以我需要一种方法让机器人在 config.json.
更新后立即读取新前缀JSON 文件:
"command_prefix": "."
UPDATE PREFIX CMD:(该命令在我的核心 cog 中)
# PREFIX CHANGE COMMAND
@commands.group(name="prefix", invoke_without_command=True)
@commands.has_permissions(administrator=True)
async def prefix(self, ctx):
current_prefix = get_config_file("command_prefix")
await ctx.channel.send(f'Current prefix is: **{current_prefix}** \n If you want to change the prefix use subcommand: _set_')
@prefix.command(name="set")
@commands.has_permissions(administrator=True)
async def set(self, ctx, mode):
mode != None
with open('config.json', 'r') as f:
config = json.load(f)
config["command_prefix"] = mode
with open('config.json', 'w') as f:
json.dump(config, f, indent=4)
f.close()
await ctx.channel.send(f'Prefix has been changed to `{mode}`')
当您第一次初始化机器人时,它会创建一个前缀并仅在您重新创建机器人之前使用该前缀。如果您希望机器人具有不同的前缀或对其进行更新,则需要对 command_prefix
参数进行回调。
首先创建 get_prefix
函数。
async def get_prefix(bot, message): # you can also do it by guild with message argument
return get_config_file("prefix_command")
然后在 Bot 实例中
bot = commands.Bot(command_prefix=get_prefix)
注意:这些都将位于您创建机器人的主文件中。每次更新前缀都会立即改变。