2016-06-07 14 views
21

Sto provando a configurare un disc disc bot con python. Ho un server discorde preesistente che vorrei che il bot si unisse, ma mi sembra che mi stia passando un po 'di tempo per farlo partecipare. Sto usando discord.py 0.10.0 e python 3.5.1. Qui è il mio codice:Partecipare a un server con l'API di Discord Python

import discord 
import asyncio 
import logging 

logging.basicConfig(level=logging.INFO) 

client = discord.Client() 

@client.event 
async def on_ready(): 
    print('Logged in as') 
    print(client.user.name) 
    print(client.user.id) 
    print('------') 
    print(client) 


@client.event 
async def on_message(message): 
    print(message) 
    if message.content.startswith('!test'): 
     counter = 0 
     tmp = await client.send_message(message.channel, 'Calculating messages...') 
     async for log in client.logs_from(message.channel, limit=100): 
      if log.author == message.author: 
       counter += 1 

     await client.edit_message(tmp, 'You have {} messages.'.format(counter)) 
    elif message.content.startswith('!sleep'): 
     await asyncio.sleep(5) 
     await client.send_message(message.channel, 'Done sleeping') 

client.run('token') 

Si noti che questo è essenzialmente lo script di base discord.py come indicato sulla pagina GitHub. Tuttavia, non riesco a capire come farlo effettivamente entrare nel mio server. Quando si inserisce questa linea nella funzione on_ready:

server = await client.accept_invite('instantinvitecode') 

con instantinvitecode sostituito con il mio istante attuale codice di invito (ho provato sia discord.gg/code e codice), ottengo discord.errors.Forbidden: FORBIDDEN (status code: 403): Bots cannot use this endpoint. Si noti che il login funziona davvero- Vengo visualizzato come nome utente e ID.

Si noti inoltre che mi sono registrato con l'API discord e registrato come un bot, ovvero il token che sto utilizzando.

+0

Per quanto ne so, è necessario unirsi a un server utilizzando l'app desktop o un browser con il proprio account bot. Una volta fatto, il bot riconoscerà che si è unito in precedenza. – Goodies

+0

Quindi, ho provato questo - ho effettuato l'accesso all'account dal quale il bot è stato autorizzato e mi sono unito al server corretto, ma non sembra aver avuto un effetto - non sta ancora entrando nel server (il valore del client. i server è []). – Laxsnor

+0

Mi chiedo invece se non sto effettuando il login come bot- ho autorizzato il bot dall'account (ed è qui che è stato generato il token), ma sto ancora loggando al client mac usando e-mail e password. – Laxsnor

risposta

49

Ho avuto qualche problema anche con questo. Quello che devi fare è:

  1. Vai al Discord developer pages (login se non l'hai).
  2. Passare all'applicazione con il bot che si desidera aggiungere al canale.
  3. Copia l'ID client/applicazione.
  4. Vai a https://discordapp.com/oauth2/authorize?client_id=CLIENT_ID_GOES_HERE&scope=bot&permissions=0 < Qui puoi impostare le autorizzazioni per il bot. Permissions can be calculated here.
  5. Selezionare server e fare clic su autorizza.

Il tuo bot ora sarà un membro del server e risponderà ai comandi che tu gli dai. Ex. ! prova nel codice che hai dato.

+3

WOW, grazie! Questo ha funzionato davvero. È un po 'folle che questo * sia * complicato. Risposta accettata e votata – Laxsnor

+0

Nessun problema, felice di poterti aiutare! Sono d'accordo e spero che facciano qualcosa a riguardo in futuro. – Elthan

+0

L'ho usato a un certo punto, e non ha funzionato anche se avevo tutte le autorizzazioni sul server. Tuttavia, quando l'attuale creatore del server lo ha fatto, ha funzionato correttamente. Qualche idea sul perché questo? – zondo

2

vi suggerisco la modifica del codice come questo:

@client.event 
async def on_ready(): 
    print('Logged in as') 
    print(client.user.name) 
    print(client.user.id) 
    print('Invite: https://discordapp.com/oauth2/authorize?client_id={}&scope=bot'.format(client.user.id)) 
    print('------') 

Penso che questa sia la soluzione migliore e più semplice. Per me funziona.

Problemi correlati