首页 > 解决方案 > 我怎样才能在一定时间内抓住所有被禁止的成员?

问题描述

我正在设计某种突袭机器人,并在 StackOverflow 上找到了它的功能。

你可以在这里找到它:discord.py 检查是否有大规模加入(raid)

我根据自己的意愿重写了这个函数,但是每次用户被禁止时,都会单独发送一个嵌入,这意味着 ID 不是收集而是单独发送。

有没有办法在 60 秒内捕获所有用户,然后将它们作为一个嵌入发送?

我已经尝试过以下方法:

allowed = 2 # Allowed joins
m = [] # Create the empty list
time_ = time.time()


def raid(member):
    global m
    global time_
    m.append(member)
    if time.time() - time_ <= 60: # If users join under 60 seconds
        time_ = time.time()
        if len(m) >= allowed:
            return True
        else:
            return False

    @commands.Cog.listener()
    async def on_member_join(self, member):
        if settings == True and KeyError: # Can be ignored, my own function
            bool_ = raid(member)
            print('Raid state: %s' % bool_)
            print(m) # Prints every information
            if bool_ == True:
                for member in m: # Loop over the whole list that gets more entries | IF-statement NOT possible
                    await member.ban(reason="Raid detected!")
                    owner = member.guild.owner
                    embed = discord.Embed(color=discord.Color.red())
                    embed.title = "Raid detected!"
                    embed.description = f"**Banned:** {member.id}" # Shows the correct ID for every ban
                    embed.set_footer(text="XXX")
                    embed.timestamp = datetime.datetime.utcnow()
                    await owner.send(embed=embed) # Embed-"Spam" for every ID
                    await member.ban(reason="Raid detected!") # Works, every user is banned
            else:
                return

我已经用 a 试过了.join(member.id),但你不能迭代它。另外,我尝试定义禁止用户的功能,但最终还是放弃了None.

标签: pythondiscorddiscord.py

解决方案


推荐阅读