python - 我怎样才能在一定时间内抓住所有被禁止的成员?
问题描述
我正在设计某种突袭机器人,并在 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
.
解决方案
推荐阅读
- vue.js - 即使相应记录未更改,组件也会重新渲染 - Vue JS,Vuex ORM
- java - Guice:使用带有自己参数的构造函数注入单例?
- python - 根据元素在列表中出现的次数执行操作
- sql - 根据下一行的值分组和计算
- html - 如何让我的 HTML 视频源成为硬盘驱动器中的 .m3u8 文件?(用于流式传输)
- command-line-interface - 报告余额错误时,Ledger-cli 显示错误的行
- javascript - 显示来自对象的消息
- javascript - Jest 在测试之间更改 POJO 模块的模拟实现
- avr - 如何用 Atmega 控制光敏电阻?
- colors - 如何在二维码中进行颜色排列?