【发布时间】:2021-03-17 05:41:32
【问题描述】:
我刚刚开始编写 Discord 机器人。我目前正在开发一个帮助龙与地下城游戏的机器人(骰子滚动和主动跟踪目前正在工作)。我已经让我的机器人与在服务器中调用命令的用户一起将私人卷发送给 DM,但在实际的 DM 中,机器人只响应 help 命令。
我已经阅读了this 的解释,但它对我来说似乎仍然没有用,因为我希望它响应 DM 中的命令,而不是获取 DM 中发送给它的消息的内容。例如,假设我在带有机器人的服务器中,并且我使用whisperRoll 命令,这会导致机器人向我发送包含我的掷骰结果的 DM。现在我已经和机器人私聊了,我想再为自己做一次,让其他玩家看不到,所以我尝试在 DM 频道中使用roll 命令。我希望它像在服务器中响应一样响应 DM 中的命令。
我想知道是否有一组默认命令被注册为“有效”,以便机器人在我丢失的 DM 中响应?我真的无法在任何地方找到答案,我什至不知道从哪里开始。
非常感谢您的帮助!
编辑:我当前的代码,给我一个CommandInvokeError:
def _prefix_callable(bot, msg):
prefix = '!'
guild = msg.guild
if p.prefixInfo == []:
pass
else:
prefix = p.getPrefix(guild)
if not guild:
return commands.when_mentioned_or(prefix)(bot, msg)
return commands.when_mentioned_or(prefix)(bot, msg)
bot = commands.Bot(command_prefix=_prefix_callable, description=description, help_command = None)
p.getPrefix(guild) 调用此代码:
def getPrefix(self, guild):
for data in self.prefixInfo:
if data[0] == str(hash(guild)):
return data[1]
return "!"
我目前正在通过 csv 搜索给定公会的正确前缀。
【问题讨论】:
-
据我所知,您当前的代码并未尝试在 DM 频道中执行任何操作。您是否添加了导致错误的实际部分?回溯应该向您显示它来自哪一行。
-
@stijndcl 在我正在 DM 通道中测试的普通命令
roll中,我有await ctx.message.delete()。正是那条线给了我一个错误。我不能删除 DM 频道中的消息吗? -
roll的代码不在您的帖子中,您应该添加导致错误的部分,以便我们帮助您修复它...是的,您不能 删除 DM 中的消息。
标签: python command discord discord.py dm