ждать отправки сообщения может время от времени - PullRequest
0 голосов
/ 13 мая 2019

Привет! Я столкнулся с проблемой, когда мой бот отправляет сообщение await ctx.send(f":white_check_mark: Member(s) {member_names} kicked from voice channel.") много раз.Кажется, это происходит на await member.move_to(channel = None, reason=None), скажем, если из речевого канала выброшено 4 участника, он отправит 4 сообщения.

Есть ли способ, которым я могу предотвратить это.

Вот мой код:

 async def voicekick(self, ctx, *members: discord.Member):
    """Kicks a member from voice and restricts them from joining all voice channels.

    - member: The member to kick
    """
    vcr = get(ctx.guild.roles, name="VC Restricted")
    for member in members:
        member_names = ', '.join([x.name for x in members])
        if member.voice is None:
            await ctx.send(f"Member(s) {member_names} not in a voice channel.")
        else:
            await member.move_to(channel = None, reason=None)
            await member.add_roles(vcr)
        await ctx.send(f":white_check_mark: Member(s) {member_names} kicked from voice channel.")

1 Ответ

1 голос
/ 13 мая 2019

Всякий раз, когда вы ударите участника, добавьте его имя в список, затем вы сможете отобразить эти имена после того, как вы ударили всех участников:

async def voicekick(self, ctx, *members: discord.Member):
    """Kicks a member from voice and restricts them from joining all voice channels.

    - member: The member to kick
    """
    vcr = get(ctx.guild.roles, name="VC Restricted")
    kicked_names = []
    for member in members:
        if member.voice is None:
            await ctx.send(f"Member(s) {member_names} not in a voice channel.")
        else:
            await member.move_to(channel = None, reason=None)
            await member.add_roles(vcr)
            kicked_names.append(member.name)
    kicked_names = ", ".join(kicked_names)
    await ctx.send(f":white_check_mark: Member(s) {kicked_names} kicked from voice channel.")
...