Бот принимает ввод пользователя через 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"]))