我正在尝试使用斜杠命令制作一个机器人,其中斜杠命令本身必须不断更新。这是一个代码示例:
@bot.slash_command(name='посещаемость', description='Позволяет посмотреть, кто был на занятиях, в какое время, и сколько находился на них')
async def pos(inter: disnake.CommandInteraction, date:str=commands.Param(name='дата', description='Дата посещаемости', choices=[dt for dt in list(load(open('data/dates.json','r')).keys())])):
await inter.response.send_message(date)
[dt for dt in list(load(open('data/dates.json','r')).keys())]
- 这是一个带有数组键的列表,会不断变化,但程序启动时会读取它,并且不再更新斜杠命令。(迪蛇库)
是否可以以某种方式更新正在运行的代码中的斜杠命令,或者将它们设置为自动更新?
据我了解,这是行不通的(如果有人知道的话请纠正我)。但您可以采用另一种方式:定期重新启动机器人(例如,每小时或在某个事件之后)。当您重新启动时,机器人将再次读取密钥文件并更新斜杠命令。
阅读有关
autocomplete
- 参数的信息commands.Param
第一个链接有文档中的示例。您本质上需要实现一个返回实际参数列表的函数: