我已经开始制作一个不和谐的机器人,但该机器人没有向服务器成员发送 dms

Posted

技术标签:

【中文标题】我已经开始制作一个不和谐的机器人,但该机器人没有向服务器成员发送 dms【英文标题】:I have started making a bot in discord but the bot is not sending dms to the members of the server 【发布时间】:2021-03-21 20:29:38 【问题描述】:

我一直在运行以下代码,经过各种更改后,即使确保已启用从服务器向用户发送消息的权限,机器人仍然不会向用户返回欢迎 dm。

import os
import discord

from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')# gets the token of the bot from the .env file

client = discord.Client()# makes and discord client

@client.event #client on the following event:
async def on_ready():
        print(f'client.user has connected to Discord!')# tells us if the bot is connected
        
@client.event
async def on_member_join(member):
    await member.create_dm()# creates an dm channel
    await member.dm_channel.send( # sends the string given as argument to the channel created
        f'Hiiiiiiiiiii member.name, welcomeeeeeeeee icyyyyyy here'
    )

client.run(TOKEN)# runs client for the bot token in TOKEN 

并且代码成功返回该机器人已连接到不和谐并且也在服务器中上线。

【问题讨论】:

【参考方案1】:

你需要启用dmintents(有很多所以我建议你启用默认intents)和intents.members

intents = discord.Intents.default()
intents.members = True

client = discord.Client(intents=intents)

不要忘记在developer portal 中启用特权成员意图

如果没有创建dm_channel,也可以是None,这是一个更好的解决方案

await member.send('whatever')

【讨论】:

以上是关于我已经开始制作一个不和谐的机器人,但该机器人没有向服务器成员发送 dms的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能制作一个不和谐的机器人来做这样的事情?

我试图向我的不和谐机器人添加播放命令,但是

在heroku上构建错误;试图制作一个不和谐的机器人

如何让 Discord 机器人向我 ping 的人发送 DM?

试图为不和谐制作一个聊天机器人,但它不起作用

如何在不和谐中制作乒乓球机器人