【问题标题】:How to send a private message to a user in discord?如何向不和谐的用户发送私人消息?
【发布时间】:2020-07-28 10:20:40
【问题描述】:

过去几个小时我一直在寻找一种使用他们的不和谐标签(例如 mj#0001)发送直接消息的方法 我到处找,没有解决方案适合我

我试过client.send_message() 但它说

类“Bot”的未解析属性引用“send_message”

这是我的代码:

@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 的半初学者,discord 库对我来说很难使用。任何帮助将不胜感激。

【问题讨论】:

  • stackoverflow.com/questions/54418496/… 这可能会有所帮助
  • 对我不起作用 :( 正如我所说,client.send_message 似乎对我没有任何作用。“Bot”类的“””未解析属性引用“send_message”“”“

标签: python discord message


【解决方案1】:

(我使用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 频道,其中 userdiscord.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")

另外,当你装饰函数时,不要调用该函数,只需将其保留在那里,不要使用任何括号。

【讨论】:

  • 这很棒 - 但我试图做的是将用户作为字符串传递。基本上,我想做的是让机器人从某人那里获取“用户”参数,然后向该人发送特定信息。例如,我只希望我的机器人向“mj#0081”发送消息,而不必使用 discord.Member 类,我希望我能理解大声笑
  • 如果您输入user:discord.Member,它应该被提及(确保您提及)并且它应该将它变成一个不和谐的成员
  • 我认为你正在做的事情会奏效,但是,你能帮我解决 bwteen client = discord.Client 和 client = commands.Bot(command_prefix="insert prefix here") 的区别吗
  • 我觉得这很难,所以如果你能帮忙就太好了
  • 使用client.get_info(user_identifier),您可以构造一个discord.User 类,它的作用与discord.Member 类几乎相同(不包括角色分配、禁止、踢等)。您可以通过删除前两个和最后一个字符来从提及中构造用户标识符。如果您所指的用户不存在,可能会引发错误。
【解决方案2】:

你可以这样做。

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

就是这样,唯一的问题只适用于 Rewrite 分支,也只适用于 commands 扩展。

但是我可以看到你使用命令扩展,所以这对你来说很好。

【讨论】:

    猜你喜欢
    • 2020-05-31
    • 2017-06-04
    • 2021-06-30
    • 2020-11-12
    • 1970-01-01
    • 2018-01-13
    • 2022-01-08
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多