机器人通过DM接受用户输入吗?

时间:2018-12-29 05:07:24

标签: python discord discord.py-rewrite

测试将某些设置模块移至DM而不是在服务器通道中进行测试,就好像我在通道中进行操作一样,即使我将漫游器设置为忽略任何人,但人们仍然容易对响应感到困惑原始命令作者

我已经尝试了常用的wait_for处理程序,但似乎无法使该机器人通过dm捕获输入

@commands.command(name="dmstats")
async def stat_dm(self, ctx):
    member = ctx.author
    stat_list = await self.get_stat_vals(ctx, member)
    reply = await ctx.author.send("What value do you want?")
    await self.bot.wait_for('message')
    if reply.content.lower() == "strength":
        await ctx.author.send("Your strength is: {}".format(stat_list["strength"]))

预计当我[p]dmstats并触发命令时,机器人会向我发送DM并提示我,但这样做没有捕捉到我的响应

1 个答案:

答案 0 :(得分:0)

如果您只想在DM通道中接受来自该用户的消息,则可以记录将消息发送给该用户的通道,然后将其作为对wait_for的支票的一部分

>
@commands.command(name="dmstats")
async def stat_dm(self, ctx):
    stat_list = await self.get_stat_vals(ctx, member)
    msg = await ctx.author.send("What value do you want?")
    def check(message):
        return message.author == ctx.author and message.channel == msg.channel
    reply = await self.bot.wait_for('message', check=check)
    if reply.content.lower() == "strength":
        await ctx.author.send("Your strength is: {}".format(stat_list["strength"]))