webentwicklung-frage-antwort-db.com.de

Wie trete ich einem Server bei?

Ich versuche, einen Zwietracht-Bot mit Python einzurichten. Ich habe einen bereits existierenden Zwietracht-Server, zu dem ich den Bot hinzufügen möchte, aber es fällt mir schwer, dies zu tun.

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

Dies ist im Wesentlichen das grundlegende Skript discord.py, wie es auf der GitHub-Seite angegeben ist. Ich kann jedoch nicht herausfinden, wie es tatsächlich meinem Server beitreten soll. Beim Einfügen dieser Zeile in das on_ready Funktion:

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

wenn "Soforteinladungscode" durch meinen tatsächlichen Soforteinladungscode ersetzt wird (ich habe sowohl discord.gg/code als auch code ausprobiert), erhalte ich

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

Die Protokollierung funktioniert tatsächlich. Ich erhalte eine Ausgabe mit meinem Benutzernamen und meiner ID. Mein Bot ist bei der Discord API registriert und ich habe bereits einen Token.

26
Laxsnor

Ich hatte auch einige Probleme damit. Was Sie tun müssen, ist:

  1. Gehen Sie zu Discord-Entwicklerseiten (melden Sie sich an, wenn Sie dies nicht getan haben).
  2. Rufe die Anwendung mit dem Bot auf, den du deinem Kanal hinzufügen möchtest.
  3. Kopieren Sie die Client-/Anwendungs-ID.
  4. Gehe zu https://discordapp.com/oauth2/authorize?client_id=CLIENT_ID_GOES_HERE&scope=bot&permissions= <Hier können Sie Berechtigungen für den Bot festlegen. Berechtigungen können hier berechnet werden .
  5. Wählen Sie den Server aus und klicken Sie auf Autorisieren.

Ihr Bot wird nun Mitglied des Servers und antwortet auf Befehle, die Sie ihm geben. Ex. Testen Sie den von Ihnen angegebenen Code.

BEARBEITEN: Sie können jetzt den Berechtigungslink ( 1 ) verwenden, um die gesamte benötigte URL zu generieren.

64
Elthan

Ich schlage vor, den Code wie folgt zu bearbeiten:

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

Ich denke, das ist die beste und einfachste Lösung. Für mich geht das.

BEARBEITEN: Discord hat tatsächlich seinen eigenen OAuth2-URL-Generator erstellt. Verwenden Sie dazu Folgendes: https://discordapp.com/developers/tools/oauth2-url-generator

2
Johnystar