AttributeError: объект 'NoneType' не имеет атрибута 'send' перезаписать Discord.py - PullRequest
0 голосов
/ 28 мая 2020

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

import keep_alive
import discord

client = discord.Client()

channel = client.get_channel('ID'`enter code here`)

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('$hello'):
        await channel.send('hello')


keep_alive.keep_alive()

client.run('ID')

1 Ответ

0 голосов
/ 28 мая 2020

get_channel не будет работать там, где у вас есть, потому что бот еще не подключился к Discord (это происходит во время run). Когда бот подключается, он создает внутренние кеши всего, о чем он знает (членов, гильдий, каналов и т. Д. c.). Эти кэши используются различными методами get, но поскольку кеши пусты, эти методы возвращают None.

Вместо этого вы можете каждый раз получать канал в on_message или использовать глобальную переменную в on_ready:

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('$hello'):
        channel = client.get_channel(1234)
        await channel.send('hello')
...