Проверьте, возвращает ли wait_for_message только числа - PullRequest
0 голосов
/ 20 февраля 2019

Мой код ниже работает нормально, но как заставить бота принимать сообщение пользователя, только если оно состоит из цифр и сказать «пожалуйста, добавьте только цифры»?

@commands.command(pass_context=True)
async def ping(self, ctx):
    message = await self.bot.send_message(ctx.message.channel, "Ask something")
    reply = await self.bot.wait_for_message(author=ctx.message.author, channel=ctx.message.channel)
    await self.bot.send_message(ctx.message.channel, "{}".format(reply.content))

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

В wait_for_message() есть аргумент check, который может проверить, что данное сообщение соответствует определенному пользователем правилу.

@commads.command(pass_context=True)
async def ping(self, ctx):
    message = await self.bot.send_message(ctx.message.channel, "Ask something")
    def is_number(msg):
        return msg.content.isdigit()
    reply = await self.bot.wait_for_message(author=ctx.message.author, channel=ctx.message.channel, check=is_number)
    await self.bot.send_message(ctx.message.channel, "{}".format(reply.content))

Вы также можете добавить обработчик, отправляющий "пожалуйста, добавьте только цифры" вis_number().

0 голосов
/ 20 февраля 2019

Вы можете воспользоваться isdigit () и сделать что-то вроде

if reply.content.isdigit():
  await self.bot.send_message(ctx.message.channel, "{}".format(reply.content))
else:
  await self.bot.send_message(ctx.message.channel, "Please add only numbers")
...