Как присоединиться к серверу?

Я пытаюсь настроить диссон бот с питоном. У меня есть ранее существующий дискорд-сервер, к которому я бы хотел присоединить бота, но мне трудно это сделать.

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

По сути, это основной скрипт discord.py, который приведен на странице GitHub. Тем не менее, я не могу понять, как заставить его присоединиться к моему серверу. При вставке этой строки в on_ready функция:

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

с "мгновенным кодом приглашения", замененным моим фактическим мгновенным кодом приглашения (я пробовал и discord.gg/code, и код), я получаю

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

Ведение журнала действительно работает; Я получаю вывод с моим именем пользователя и идентификатором. Мой бот зарегистрирован в API Discord, и у меня уже есть токен.

2 ответа

Решение

У меня тоже были проблемы с этим. Что вам нужно сделать, это:

  1. Перейдите на страницы разработчиков Discord (войдите, если у вас нет).
  2. Перейдите в приложение с ботом, которого вы хотите добавить в свой канал.
  3. Скопируйте идентификатор клиента / приложения.
  4. Перейдите на https://discordapp.com/oauth2/authorize?client_id=CLIENT_ID_GOES_HERE&scope=bot&permissions=0 <Здесь вы можете установить разрешения для бота. Разрешения могут быть рассчитаны здесь.
  5. Выберите сервер и нажмите "Авторизовать".

Ваш бот теперь будет членом сервера и будет отвечать на команды, которые вы ему дадите. Ex.! Тест в коде, который вы дали.

РЕДАКТИРОВАТЬ: Теперь вы можете использовать ссылку разрешений ( 1) для создания всего необходимого URL.

Прошло 4 года с тех пор, как я задал этот вопрос, и вот как я сейчас справляюсь с этой проблемой.

Я использую https://discordapi.com/permissions.html, куда вы просто вставляете свой идентификатор бота (который вы можете получить здесь: https://discord.com/developers/applications), и он также имеет преимущество расчета любой конфигурации разрешений. вы хотите для себя.

Если вы ленивы, это может быть достойным решением и для вас.

Я предлагаю редактировать код следующим образом:

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

Я думаю, что это лучшее и самое простое решение. Меня устраивает.

РЕДАКТИРОВАТЬ: Discord фактически сделал свой собственный генератор URL OAuth2, так что используйте его: https://discordapp.com/developers/tools/oauth2-url-generator

Другие вопросы по тегам