discord.py #bots
#discord.py #боты
Вопрос:
Это немного запутанный вопрос, поэтому вот более подробное объяснение. Я пишу discord-бота и пытаюсь создать функцию, которая принимает ответ «да» или «нет» и удаляет сообщения через 20 секунд или после получения ответа. Код:
class MyBot(commands.Bot):
def __init__(self, command_prefix, self_bot):
commands.Bot.__init__(self, command_prefix=command_prefix, self_bot=self_bot)
self.add_commands()
self.playinput = ""
self.inputvalid = True
self.playing = False
self.replace = False
def add_commands(self):
@bot.command(name="play",help="Plays the first Youtube result from the input you give. Usage: -play [search here] Example: -play Never Gonna Give You Up")
async def play(cxt,*args):
self.playinput = ""
self.inputvalid = True
if len(args) != 0:
for i in args:
self.playinput = i
else:
message = await cxt.send("Invalid input.")
asyncio.sleep(5)
await bot.delete_message(message)
inpvalid = False
if inpvalid == True:
if self.playing == True:
cxt.send("Video already playing. Replace? y/n")
#
def check(msg):
return msg.author == cxt.author and msg.channel == cxt.channel and
msg.content.lower() in ["y", "n"]
replacemessage = await bot.wait_for("message", check=check)
bot = MyBot(command_prefix="-", self_bot=False)
bot.run(TOKEN)
В def check(msg):
Я знаю, как удалять сообщения, мне просто нужен способ считать до 20, пока он проверяет сообщение.
Ответ №1:
Пожалуйста, ознакомьтесь со всей документацией и примерами проекта, над которым вы работаете,
Примечание: Не создавайте подкласс Bot, если вы не знаете, что вы на самом деле делаете, потому что это может повлиять на атрибуты и функции класса
@bot.command(name="play", help="Plays the first YouTube result from the input you give. Usage: -play [search here] Example: -play Never Gonna Give You Up")
async def play(cxt, *, args):
#args is now a string of the query that follows ".play" in the command
def check(msg):
return msg.author == cxt.author and msg.channel == cxt.channel and ("y" in msg.content.lower() or "n" in message.content.lower())
if self.playing == True:
cxt.send("Video already playing. Replace? y/n")
replacemessage = await bot.wait_for("message", check=check, timeout=20)