Python - 在用户加入时发送消息

Posted

技术标签:

【中文标题】Python - 在用户加入时发送消息【英文标题】:Python - Send Messages Upon User Joining 【发布时间】:2018-07-25 19:23:21 【问题描述】:

所以,我正在尝试使用最新版本的 Discord.Py 和 Python 3.6.4 来检测用户何时加入,它会向他们发送一条欢迎他们的消息。我的代码如下:

@client.event
async def on_member_join(member):
    await client.send_message(member,"Welcome!")

这段代码似乎不起作用,我已经查看了其他人是如何做到的,但是代码已经过时了,在 API 上也找不到关于我将如何做到这一点的任何内容。任何帮助表示赞赏!

主要编辑:好的,所以代码工作正常,但我收到 403 权限错误。 Bot 以 FULL PERMISSIONS 重新邀请,并且在服务器中具有 FULL PERMISSIONS。所以我不知道为什么会这样。 bot 可以随时随地发送消息,但不是专门在 on_memer_join(member) 下发送消息...为什么?

【问题讨论】:

“不起作用”是什么意思。你有任何错误吗?另外,您正在使用哪个 discord.py,重写还是异步?检查版本 我使用的是版本:0.16.2(我呃,假设是异步的)我刚刚运行了 pip install Discord.Py 【参考方案1】:

discord.py 目前正在经历一些蜕变。有一个“async”分支,版本号 0.16,还有一个“rewrite”分支,版本号 1.0,虽然还没有完成,但是很多人已经开始使用了。要找出您正在使用哪个,只需尝试运行

import discord
print(discord.__version__)

您发布的代码对于“异步”分支看起来不错,所以我怀疑您在“重写”分支上。试试

@client.event
async def on_member_join(member):
    await member.send("Welcome!")

重写分支的文档是here

【讨论】:

这对我不起作用,它继续给出错误:'Member' has no attribute 'send'(虽然我发誓确实如此) 你知道你使用的是哪个版本吗?您的原始代码给出了什么错误? 它给了我一个 403 权限被拒绝错误..“无法向该用户发送消息”版本 0.16.12 您的代码没有问题。当您将机器人添加到服务器时,您没有授予它发送私人消息所需的权限。从服务器中删除机器人并使用正确的权限再次添加它。 如何授予它权限?如果您的意思是在服务器中,它完全具有权限。我尝试重新邀请它,但它不要求任何权限,我需要写一些代码吗?【参考方案2】:

对于 Discord.py 的重写版本,您需要启用 Intents


intents = discord.Intents.all()
client = Bot.commands(command_prefix = '', intents = intents)

async def on_member_join(member):
    await member.send('Welcome!')

您还必须在机器人应用程序中启用意图。 抱歉,这是一个迟到的评论。

【讨论】:

以上是关于Python - 在用户加入时发送消息的主要内容,如果未能解决你的问题,请参考以下文章

当有人加入特定频道时发送消息 - Discord Bot

(Discord 机器人)当用户加入 Discord 服务器(discord.js)时,如何发送欢迎消息?

如何根据反应发送消息,然后根据用户消息发送另一个消息?使用 JDA

XMPP MUC 向房间发送消息时重复消息

如何在聊天中发送消息,以便所有者加入时向服务器发送消息?

Discord BOT python,如何在特定用户编写命令时发送消息