Exécuter un nombre variable de variables en python

voix
-1

Alors, je fais un bot de discorde, et que je me sers discord.py. Je voulais utiliser la fonction move_member pour déplacer de nombreuses personnes d'un canal à l'autre, mais il ne vous permet de déplacer un membre à la fois, donc, avec l'aide de certaines personnes, j'ai fait le système suivant pour diviser les membres en individuel les variables.

@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)

Ma question est, je ne sais pas vraiment comment je pourrais exécuter la commande move_member une fois par chaque utilisateur dans un canal tout en changeant l'ID de l'utilisateur est en mouvement. Le bot saisit tous les ID utilisateur dans un canal et les met dans une liste, puis en utilisant des dictionnaires les séparant dans des variables appelées ID1, ID2, ... id3

J'ai essayé d'utiliser « random.choice », mais je ne peux pas le faire si je ne sais pas quelles variables existent, et qui ne le font pas.

Comment dois-je m'y prendre?

Tous les commentaires seraient appréciés, comme je suis assez nouveau à la programmation.

Créé 07/11/2018 à 20:13
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Créer une copie de la membersliste, puis itérer sur cette liste, appelant move_memberà chacun des éléments est cela:

@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) 
Créé 07/11/2018 à 21:22
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more