2017-06-20 2 views
-1

Plus tôt, j'ai essayé d'utiliser la fonction edit_server, comme indiqué dans les documents discord.py ici: http://discordpy.readthedocs.io/en/latest/api.html?highlight=ownership, et je n'ai pas compris comment l'utiliser. Je voudrais l'utiliser pour faire une commande pour transférer la propriété à un autre utilisateur. mon code:discord.py edit_server exemple de fonction

elif message.content.startswith('!ownership): 
    await client.edit_server(server='317161621233467392', owner='323512053862236161')` 

erreur:

Traceback (most recent call last): 
    File "C:\Users\parke\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 307, in _run_event 
    yield from getattr(self, event)(*args, **kwargs) 
    File ".\start_bot.py", line 33, in on_message 
    await client.edit_server(server='317161621233467392', owner='323512053862236161') 
    File "C:\Users\parke\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 2337, in edit_server 
    icon = server.icon 
AttributeError: 'str' object has no attribute 'icon'` 

quelqu'un pourrait peut-être me montrer un exemple avec elle une utilisation correcte, merci!

est tout mon code ici (moins mon jeton): https://pastebin.com/yXPCjUbP

+2

Le code Python que vous avez publié est (1) invalide et (2) non pertinent. – DyZ

+0

Les retraçages @DYZ devraient appartenir aux blocs de code et non aux guillemets. https://meta.stackexchange.com/questions/32264/posting-a-stack-trace en raison de la belle marque vers le bas et il semble beaucoup plus propre. Et aussi, le code OP affiché était en effet invalide, ce que je suis d'accord. Mais c'est en fait pertinent, puisque c'est ce que l'on "suppose" d'être fait, mais pas complet. (Je n'ai voté votre commentaire qu'à cause de (1)) – abccd

+0

@abccd Ok, désolé, je vais le modifier maintenant. – ParkerSTP

Répondre

0

Comme le doc dit, le server et owner prend un discord.Server et discord.Member objet, vous pouvez non seulement passer une représentation str de son id.

edit_server(server, **fields)This function is a coroutine.

Edits a Server.

You must have the proper permissions to edit the server.

The Server object is not directly modified afterwards until the corresponding WebSocket event is received.

Parameters:

server (Server) – The server to edit.

name (str) – The new name of the server.

icon (bytes) – A bytes-like object representing the icon. See edit_profile() for more details. Could be None to denote no icon.

splash (bytes) – A bytes-like object representing the invite splash. See edit_profile() for more details. Could be None to denote no invite splash. Only available for partnered servers with INVITE_SPLASH feature.

region (ServerRegion) – The new region for the server’s voice communication.

afk_channel (Optional[Channel]) – The new channel that is the AFK channel. Could be None for no AFK channel.

afk_timeout (int) – The number of seconds until someone is moved to the AFK channel.

owner (Member) – The new owner of the server to transfer ownership to. Note that you must be owner of the server to do this.

verification_level (VerificationLevel) – The new verification level for the server.

Raises:

Forbidden – You do not have permissions to edit the server.

NotFound – The server you are trying to edit does not exist.

HTTPException – Editing the server failed.

InvalidArgument – The image format passed in to icon is invalid. It must be PNG or JPG. This is also raised if you are not the owner of the server and request an ownership transfer.

Edit:

Vous avez peut-être manqué quelque chose, s'il vous plaît copier exactement ce, notez qu'il ya deux get_server appels. Remplissez respectivement les champs server_id et member_id.

await client.edit_server(server=client.get_server("server_id"), owner=client.get_server("server_id").get_member("member_id")) 
# you missed this part =>           |—————————————————————-———–—-| 

Pour éviter la réplication, vous pouvez le faire:

server = client.get_server("server_id") 
await client.edit_server(server=server, owner=server.get_member("member_id")) 

Rappel:

Vous devez conserver une partie server= et owner=.

+0

cela fonctionnerait-il? 'client.edit_server (discord.Server (317161621233467392), discord.Member (323512053862236161))' – ParkerSTP

+0

Non, à moins que vous ne l'ayez essayé et que vous n'ayez pas trouvé le contraire. Le serveur est-il le serveur à partir duquel vous envoyez le message? Et le membre un membre du serveur? – abccd

+0

De toute façon, vous pouvez le faire à la place 'client.get_server (" server id ")' pour le serveur et 'client.get_server (" id du serveur "). Get_member (" member id ")' pour le membre – abccd