объект ‘Client’ не имеет атрибута ‘send_message’ ошибка

#python #discord.py

#питон #discord.py

Вопрос:

здравствуйте, я пытался отредактировать этот код, чтобы заставить его работать, но я застрял в точке, где я получал эту ошибку:

 File "main.py", line 24, in on_member_join
    await client.send_message(member, DMMessage)
AttributeError: 'Client' object has no attribute 'send_message'
 

я предполагаю, что это как-то связано с намерениями, но после долгих исследований и времени я не смог это исправить, может кто-нибудь объяснить мне, как я могу это исправить?

мой код для справки:

 import discord

import os

intents = discord.Intents(members=True, messages = True, guilds=True,)



client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print('logged in as')
    print(client.user.name)
    print(client.user.id)
    print('-----')

DMMessage = "hello"

@client.event
async def on_member_join(member):
    print("Recognized that "   member.name   " joined")
    await client.send_message(member, DMMessage)
    await client.send_message(discord.Object(id='77769000355535264'), 'Welcome!')
    print("Sent message to "   member.name)
    print("Sent message about "   member.name   " to the server")

@client.event
async def on_member_remove(member):
    print("Recognized that "   member.name   " left")
    await client.send_message(discord.Object(id='77769000355535264'), '**'   member.mention   '** just left.')
    print("Sent message to server")


client.run(os.getenv('TOKEN'))
 

Ответ №1:

Client.send_message() это очень устаревший метод, который был удален в последних версиях discord.py . Используется Member.send() для отправки сообщений DM:

 @client.event
async def on_member_join(member):
    await member.send('Welcome to the server!')
 

Также обратите внимание, что когда участник покидает сервер, а у бота нет общих гильдий с этим пользователем, ваш бот не сможет их DM и выдаст discord.Forbidden исключение.