@FrOms

Как в discord.py сделать ветку команд?

Мне нужно чтобы, когда кто-то писал команду "я" после команды "!мм", бот выводил определенное сообщение, но проблема в том, что он не выводит это сообщение. Вот кусок кода:

if message.content.startswith('!мм'):
        await message.channel.send(f'@everyone кто мм? Пока что идет {message.author.mention}')
        await message.delete()
        # не работает
        if message.content.startswith('я'):
            await message.channel.send('@everyone кто мм 2/5')
  • Вопрос задан
  • 716 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Romanok2805
is_vote_started = False
total_count = 0
max_count = 5
list_mentions = []

if message.content.startswith('!мм'):
    await message.delete()
    if is_vote_started:
        await message.channel.send(f'Голосование уже начато')
        return
    list_mentions.append(message.author.mention)
    is_vote_started = True
    total_count = 0
    await message.channel.send(f'@everyone кто мм? Пока что идет {message.author.mention} {total_count}/{max_count}')


if message.content.startswith('я'):
    if not is_vote_started:
        return
    total_count += 1
    list_mentions.append(message.author.mention)
    
    if total_count == max_count:
        is_vote_started = False
        await message.channel.send(f'Набрано {max_count} участников {total_count}/{max_count} {", ".join(list_mentions)}')
    else:
        await message.channel.send(f'@everyone кто мм? {total_count}/{max_count} {", ".join(list_mentions)}')
Ответ написан
SoreMix
@SoreMix Куратор тега Python
yellow
Потому что как может сообщение начинаться с "я", если сработало условие, что сообщение начинается с "!мм"?
https://pythonz.net/references/named/str.startswith/

Тогда уж либо так
if message.content.startswith('!мм'):
        await message.channel.send(f'@everyone кто мм? Пока что идет {message.author.mention}')
        await message.delete()
        # не работает
        if message.content.startswith('!мм я'):
            await message.channel.send('@everyone кто мм 2/5')

либо разбивайте строку по пробелу и ищите нужные аргументы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы