【发布时间】:2021-09-17 10:17:54
【问题描述】:
我制作了一个自动添加和删除角色的机器人。一切正常,但添加在运行命令后的 15/20 秒内起作用。移除过程最多需要 15 分钟。
我做错了什么?几个月前我开始编程并开始使用 Python,所以任何提示都是有用的。
guildid、channelid 和 roleid 现在是数字,我把占位符放进去。
@tasks.loop(seconds=10)
async def autoderolergame():
tasks = []
guild = client.get_guild(guildid)
channel = guild.get_channel(channelid)
role = guild.get_role(roleid)
for member in guild.members:
if member not in channel.members:
try:
await member.remove_roles(role, reason='Leaving Voice channel')
except:
pass
if str(member.status) == 'offline':
try:
await member.remove_roles(role, reason='Going offline, so no more VIP rain')
except:
pass
我也尝试用 'for member in guild.members' 代替 'guild.fetch_members() 中成员的异步:' 遗憾的是,这并没有什么不同。
我正在考虑在频道中保存用户列表并每 10 秒更新一次,然后查看列表并选择不再在频道中的所有用户,删除角色,然后将其从列表中删除,那会是更好的解决方案吗? 我宁愿不这样做,因为我想使用 Discord.py 的内置函数。
感谢您的帮助!
【问题讨论】:
标签: python-3.x discord.py bots