client.private_channels и member.dm_channel имеют значение "None" - PullRequest
0 голосов
/ 08 июля 2020

Я пишу бота Discord, и в фоновой задаче client.private_channels и member.dm_channel отображаются как None. Вот мой код, в котором я создаю фоновую задачу.

# run this code when client is ready
def my_run_task():
    client.loop.create_task(BackgroundManager())
    client.run(_token)

Вот где я определил BackgroundManager():

async def BackgroundManager():
    await client.wait_until_ready()
    await SendDM(ID)

и, наконец, вот SendDM():

async def SendDM(ID):
   member = client.guilds[0].get_member(int(ID))
   DM = member.dm_channel
   PC = client.private_channels
   await member.dm_channel.send('DM has been sent.')

Обратите внимание, что ID - это жестко закодированная строка, которую я отключил из соображений конфиденциальности. Это действительный идентификатор, который возвращает правильный объект-член.

DM отображается как None, а PC - пустой список. Почему я не могу получить доступ к dm_channel пользователя?

1 Ответ

1 голос
/ 08 июля 2020

Наиболее вероятное объяснение состоит в том, что ваш бот либо не обменивался DM с пользователем, либо канал DM не был получен при запуске бота. В любом случае вы можете send напрямую обратиться к члену, который будет обрабатывать создание или получение канала DM

await member.send('DM has been sent.')
...