Бот принимает ввод пользователя через DM?

При тестировании перемещения некоторых из моих установочных модулей на 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 ответ

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