Comment rejoindre un serveur?

J'essaie de configurer un bot discord avec python. J'ai un serveur discord préexistant que je voudrais que le bot se joint, mais j'ai du mal à le faire.

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

C'est essentiellement la base discord.py script comme indiqué sur la page GitHub. Cependant, je n'arrive pas à comprendre comment l'avoir réellement rejoint mon serveur. Lorsque vous insérez cette ligne dans la fonction on_ready:

server = await client.accept_invite('instant-invite-code')

Avec "Instant-invite-code" remplacé par mon code d'invitation instantané réel (j'ai essayé les deux discord.gg/code et le code), je reçois

discord.errors.Forbidden: FORBIDDEN (status code: 403): Bots cannot use this endpoint

La journalisation fonctionne réellement; je reçois une sortie avec mon nom d'utilisateur et mon id. Mon bot est enregistré avec l'API discord et j'ai déjà un jeton.

23
demandé sur abccd 2016-06-08 00:01:17

2 réponses

J'ai eu quelques problèmes avec cela aussi. Ce que vous devez faire est:

  1. Allez dans les pages Discord developer (connectez-vous si vous ne l'avez pas fait).
  2. Accédez à l'application avec le bot que vous souhaitez ajouter à votre chaîne.
  3. Copiez L'ID Client/Application.
  4. Aller à https://discordapp.com/oauth2/authorize?client_id=CLIENT_ID_GOES_HERE&scope=bot&permissions=0 les autorisations peuvent être calculées ici.
  5. Sélectionnez serveur et cliquez sur Autoriser.

Votre bot sera maintenant membre du serveur et répondra aux commandes que vous lui donnez. Ex. !test dans le code que vous avez donné.

EDIT: vous pouvez maintenant utiliser le lien permissions (1) pour générer L'URL entière nécessaire.

56
répondu Elthan 2018-08-19 19:57:46

Je suggère d'éditer le code comme ceci:

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

Je pense que c'est la meilleure et la plus facile solution. Il fonctionne pour moi.

EDIT: Discord a fait son propre générateur d'url OAuth2, alors utilisez-le: https://discordapp.com/developers/tools/oauth2-url-generator

2
répondu Johnystar 2018-04-26 16:29:22