оператор ожидания не выводит сообщение - PullRequest
0 голосов
/ 10 сентября 2018

Привет У меня возникла небольшая загадка со строкой моего кода, которая не выводит сообщение.

Как это должно работать

Если роль люркера в ролях участников возвращается Я обнаружил, что некоторые люркеры готовы быть ударными, хотели бы вы их пнуть? . - иначе, если участники без луркеров вернутся Никто не прячется сегодня, чтобы пнуть.

Проблема, с которой я столкнулся, заключается в том, что ни один из тех, кто сегодня не пинается, не выводит.

Вот то, с чем я работаю, чтобы дать вам представление о том, чего я пытаюсь достичь:

@commands.command(pass_context=True, no_pm=True)
@checks.is_owner()
async def check_lurkers(self, ctx, *_):
    """Manually check for lurkers"""

    serverid = '465536300452151298'
    server = self.bot.get_server(serverid) # Soon to change to ctx.message.server
    lurker_role = discord.utils.get(server.roles, name="Lurker")
    member_role = discord.utils.get(server.roles, name="Members")
    any_lurkers = False
    for member in list(server.members):
        if member_role not in member.roles and lurker_role in member.roles:
            await self.bot.say("I've found some lurkers ready to be kicked, would you like to kick them?")
            msg = await self.bot.wait_for_message(timeout=10)
            if msg is None or msg.content.lower().strip() in ("no", "n"):
                await self.bot.say("No lurkers were kicked.")

            elif msg.content.lower().strip() in ("yes", "y"):
                await self.bot.kick(member)
                any_lurkers=True
            if any_lurkers:
                await self.bot.say("Adios lurkerinos! :wave:")
            else:
                await self.bot.say("No lurkers around to kick today. :raised_hands: ")

else: await self.bot.say("No lurkers around to kick today. :raised_hands: ")

Это строка, которая ничего не выводит. Что я тут не так делаю?

Помощь будет оценена.

1 Ответ

0 голосов
/ 10 сентября 2018

Здесь мы строим список люркеров, а затем решаем, пнуть их или нет. Обратите внимание, что решение о том, пнуть или нет, принимается ровно один раз, вне цикла.

@commands.command(pass_context=True, no_pm=True)
@checks.is_owner()
async def check_lurkers(self, ctx):
    """Manually check for lurkers"""

    serverid = '465536300452151298'
    server = self.bot.get_server(serverid) # Soon to change to ctx.message.server
    lurker_role = discord.utils.get(server.roles, name="Lurker")
    member_role = discord.utils.get(server.roles, name="Members")
    any_lurkers = False
    lurkers = [member for member in server.members 
               if member_role not in member.roles and lurker_role in member.roles]
    if lurkers:
        await self.bot.say("I've found some lurkers ready to be kicked, would you like to kick them?")
        msg = await self.bot.wait_for_message(timeout=10)
        if msg is None or msg.content.lower().strip() not in in ("yes", "y"):
            await self.bot.say("No lurkers were kicked.")
        else:
            for lurker in lurkers:
                await self.bot.kick(lurker)
            await self.bot.say("Adios lurkerinos! :wave:")
    else:
        await self.bot.say("No lurkers around to kick today. :raised_hands: ")
...