бот принимает ввод пользователя через DM? - PullRequest
0 голосов
/ 29 декабря 2018

Тестирование перемещения некоторых из моих модулей установки на 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 голосов
/ 31 декабря 2018

Если вы хотите принимать сообщения только от этого пользователя в канале 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"]))
...