Как отправить личное сообщение пользователю, находящемуся в раздоре? - PullRequest
2 голосов
/ 15 апреля 2020

Последние пару часов я искал способ отправить прямое сообщение с помощью их тега разногласия (например, mj # 0001). Я искал везде, и у меня нет решения.

Я пытался client.send_message() но там написано

неразрешенная ссылка на атрибут "send_message" для класса "Bot"

вот мой код:

@client.command()
async def DM(ctx, user_to_dm): # user_to_dm is the discord tag like mj#0081
    await client.send_message(user_to_dm, "insert message here")

я также пытался создать частный канал и добавить участника, которого я хочу, но мне не повезло. Полу-новичок в python, библиотека диссонанса была для меня очень трудной. любая помощь будет оценена.

1 Ответ

0 голосов
/ 15 апреля 2020

(я использую discord.Client, поэтому вам, возможно, придется немного изменить это значение)

У меня есть эта функция, которая отправляет человеку сообщение, когда он присоединяется.

@client.event
async def on_member_join(user):
    await user.create_dm()
    await user.dm_channel.send(f'Hi **{user.name}**, welcome to the server! Be sure to read the rules to stay out of trouble. Have a great time!')

Итак, перед Вы отправляете прямое сообщение человеку, сначала вам нужно await user.create_dm(), чтобы открыть канал DM, где user - это discord.Member объект.

Так что-то вроде этого.

@client.command
async def DM(ctx, user):
    user_identifier = int(user[2:-1])
    message_user = client.get_user(user_identifier)
    # now we have a discord.User class under message_user
    await message_user.create_dm()
    await message_user.dm_channel.send(user, "insert message here")

Также, когда вы украшаете функции, не вызывайте функцию, просто оставьте ее без скобок.

...