web-dev-qa-db-fra.com

Comment rejoindre un serveur?

J'essaie de configurer un bot discord avec Python. J'ai un serveur discord préexistant auquel j'aimerais que le bot se joigne, 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 le script discord.py de base tel qu’indiqué sur la page GitHub. Cependant, je n'arrive pas à comprendre comment le joindre effectivement à mon serveur. Lors de l'insertion de cette ligne dans le on_ready une fonction:

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

avec "code d'invitation instantané" remplacé par mon code d'invitation instantanée actuel (j'ai essayé les deux discord.gg/code et 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 identifiant. Mon bot est enregistré avec l'API discord et j'ai déjà un jeton.

26
Laxsnor

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

  1. Allez sur le pages de développeur Discord (connectez-vous si vous ne l'avez pas encore fait).
  2. Accédez à l'application avec le bot que vous souhaitez ajouter à votre chaîne.
  3. Copiez l'ID client/application.
  4. Allez à https://discordapp.com/oauth2/authorize?client_id=CLIENT_ID_GOES_HERE&scope=bot&permissions= <Vous pouvez définir des autorisations pour le bot ici. Les autorisations peuvent être calculées ici .
  5. Sélectionnez le serveur et cliquez sur autoriser.

Votre bot sera maintenant un 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 des autorisations ( 1 ) pour générer l’URL complète nécessaire.

64
Elthan

Je suggère de modifier 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 solution la meilleure et la plus simple. Ça marche pour moi.

EDIT: Discord a en fait créé son propre générateur d’URL OAuth2, utilisez donc ceci: https://discordapp.com/developers/tools/oauth2-url-generator

2
Johnystar