私信私信,欢迎新用户加入服务器

Posted

技术标签:

【中文标题】私信私信,欢迎新用户加入服务器【英文标题】:Send a direct message on private message to welcome new users who join the server 【发布时间】:2017-12-12 15:32:28 【问题描述】:

我想让机器人向加入服务器的新用户发送直接/私人消息。它能够在频道上发布欢迎消息,但它不断抛出直接消息的错误。

const Discord = require('discord.js');
const bot = new Discord.Client ();

bot.on('ready', () => 
  console.log('I am ready!');
);

bot.on('guildMemberAdd', member => 
       member.guild.defaultChannel.send(`Welcome to the server, $member!`);
       console.log(`$member.user.username has joined`);
);

bot.login('TOKEN_HERE');

【问题讨论】:

错误是什么? 我尝试了几种方法,但大多数都给我一个功能错误。我最后使用了这个: member.sendMessage(message.author, "Hello!");这给出了一个未定义的错误。 【参考方案1】:

Member 对象有一个发送方法,就像频道一样。

注意 sendMessage 已弃用

const Discord = require('discord.js');
const bot = new Discord.Client ();

bot.on('guildMemberAdd', member => 
   member.send("Welcome to the server!");
);

bot.login('TOKEN_HERE');

【讨论】:

【参考方案2】:

使用 Python 可以运行如下脚本 (Source)

# bot.py
import os

import discord
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')

client = discord.Client()

@client.event
async def on_ready():
    print(f'client.user.name has connected to Discord!')

@client.event
async def on_member_join(member):
    await member.create_dm()
    await member.dm_channel.send(
        f'Hi member.name, welcome to my Discord server!'
    )

client.run(TOKEN)

on_member_join() 处理新成员加入公会的事件。

在此示例中,它使用member.create_dm() 创建直接消息通道。然后,使用该频道.send() 直接向该新成员发送消息。

【讨论】:

以上是关于私信私信,欢迎新用户加入服务器的主要内容,如果未能解决你的问题,请参考以下文章

机器人询问用户他们希望加入啥角色,机器人根据回复将他们添加到角色

给 ABP vNext 应用安装私信模块

发送私信 Discord-api

十七CANdelaStudio深入-创建新工程

给朋友发私信

Discord.js 如何检查用户是不是不接受私信