Автобот Discord: прямое отправление сообщений пользователю при присоединении к серверу / гильдии

#python #python-3.x #discord #discord.py #chatbot

#python #python-3.x #Discord #discord.py #чат-бот

Вопрос:

Я пытаюсь создать бота для запуска через мою личную учетную запись discord и отправлять сообщения людям, когда они присоединяются к определенному серверу discord, на котором я нахожусь. Однако мой метод on_member_join (member) не выполняется, когда участник присоединяется к серверу (не выводит «зарегистрированный» в терминале). Мне любопытно, как заставить бота прослушивать определенный сервер или просто зарегистрировать это событие в целом. Обратите внимание, что on_connect () и spam () работают должным образом.

 import discord
import asyncio
import requests
from discord.ext import commands
yer=commands.Bot(command_prefix="!",help_command=None,self_bot=True)
token="TOKEN"

class SelfBot(commands.Cog):
    def __init__(self,yer):
        self.yer=yer

   @yer.command()
   async def spam(ctx):
        for i in range(50):
            await ctx.send("Hello!")
            await asyncio.sleep(0.7)

    @yer.event
    async def on_connect():
        await yer.change_presence(status=discord.Status.idle,activity=discord.Game("Game"))

   @yer.event
   async def on_member_join(member):
       print("registered")

yer.run(token,bot=False)
  

Ответ №1:

Селфи -боты не авторизованы в Discord и могут заблокировать вашу учетную запись.

API Discord предоставляет отдельный тип учетной записи пользователя, предназначенный для автоматизации, называемый учетной записью бота. Учетные записи ботов могут быть созданы на странице приложений и аутентифицируются с использованием токена (а не имени пользователя и пароля). В отличие от обычного потока OAuth2, учетные записи ботов имеют полный доступ ко всем маршрутам API без использования токенов на предъявителя и могут подключаться к шлюзу реального времени. Автоматизация учетных записей обычных пользователей (обычно называемых «self-bots») за пределами OAuth2 / bot API запрещена и может привести к удалению учетной записи, если ее обнаружат.

Вы не сможете делать такого рода вещи с помощью официального discord.py модуля, и я не уверен, что вы сможете получить помощь по StackOverflow, если выберете что-то другое для создания само-бота.