因此,我正在制作一个discord机器人,为此,我正在使用discord.py。我想使用move_member函数将许多人从一个渠道转移到另一个渠道,但是它一次只允许您转移一个成员,因此,在某些人的帮助下,我制作了以下系统将成员拆分为单个成员变量。
@client.event
async def on_message(message):
server = message.server
cnt = message.content
canalote = server.get_channel(message.author.voice.voice_channel.id)
print(str(canalote) + " this is the channel id")
members = canalote.voice_members
canal_def = client.get_channel("destination channel id")
member_ids = []
for member in members:
member_ids.append(member.id)
for idx, val in enumerate(member_ids, 1):
globals()["id" + str(idx)] = val
if message.author == client:
return()
elif "move" in cnt:
for int in range(idx):
await client.move_member(server.get_member(val), canal_def)
else:
return("nothing for me to do")
我的问题是,我真的不知道如何在通道中为每个用户运行一次move_member命令,同时还更改其移动用户的ID。该机器人会抓取频道中的所有用户ID并将其放入列表中,然后使用字典将其分为名为id1,id2,id3 ...
的变量。我尝试使用“ random.choice”,但如果我不知道哪些变量存在,哪些不存在,则无法这样做。
我应该怎么做?
任何反馈将不胜感激,因为我是编程的新手。
答案 0 :(得分:0)
创建members
列表的副本,然后遍历该列表,对每个元素调用move_member
:
@client.event
async def on_message(message):
members = list(message.author.voice.voice_channel.voice_members) # create a copy of the list
canal_def = client.get_channel("destination channel id")
if message.author == client:
return()
elif "move" in message.content:
for member in members:
await client.move_member(member, canal_def)