Discord бот отправляет сообщения только в лс, но не работает на серверах
Бот работает в личных сообщениях исправно, но абсолютно ни при каких условиях не работает на каналах. Все права выданы при приглашении и даже дополнительно на самом канале, никаких ограничений нет и не важно какой канал.
Помогите решить данную проблему, у меня не вышло.
Пример кода:
import discord
import json
import requests
from discord.ext import commands
bot = commands.Bot(command_prefix = '/')
@bot.event
async def on_ready():
print('Я готов')
@bot.command()
async def hello(ctx):
await ctx.send('Test10')
@bot.command()
async def nya(ctx):
await ctx.send('Hello there')
@bot.command()
async def hello2(ctx):
author = ctx.message.author
await ctx.send(f'Hello, {author.mention}!')
@bot.command()
async def fox(ctx):
response = requests.get('https://some-random-api.ml/img/fox') # Get-запрос
json_data = json.loads(response.text) # Извлекаем JSON
embed = discord.Embed(color = 0xff9900, title = 'Random Fox') # Создание Embed'a
embed.set_image(url = json_data['link']) # Устанавливаем картинку Embed'a
await ctx.send(embed = embed) # Отправляем Embed
bot.run('Здесь токен')
Ответы (1 шт):
Вверху, после импортов вписываете:
intents = discord.Intents.default()
intents.message_content = True
Затем идёте в панель управления ботом на https://discord.com/developers/applications/ и заходите в раздел Bot.
Там ищите в категории MESSAGE CONTENT INTENT параметр Will be required for your bot to receive message content in most messages и ставьте галочку.
Всё заработает.
После перехода модуля discord.py на API v10 возникла такая проблема.
Если вы это читаете через какое-то время, после этого решения, то может уже не работать. Дискорд через два дня закрывает доступ к большинству возможностей ботов и чтения содержания сообщений на серверах для не верифицированных ботов. А верификация происходит в ручном режиме и для полезных, не вредных и крутых ботов.