📅  最后修改于: 2023-12-03 14:40:44.529000             🧑  作者: Mango
Discord.js 是一个基于 Node.js 的库,用于与 Discord API 进行交互。它允许开发者构建和管理 Discord 机器人,并控制 Discord 服务器上的消息、频道和用户。
要向 Discord 服务器发送消息,我们需要创建一个 Discord.Message
对象,并使用 Discord.TextChannel.send()
方法将其发送到指定的频道。
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log('已登录 Discord!');
});
client.on('message', (message) => {
if (message.content === 'ping') {
const channel = message.channel;
channel.send('Pong!');
}
});
client.login('您的 Bot Token');
在上面的示例中,当机器人接收到 ping
消息时,它会向同一频道回复 Pong!
。
Discord.MessageEmbed
对象允许我们将消息装饰为更复杂的形式,包括颜色、标题、描述、图片、链接等等。
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log('已登录 Discord!');
});
client.on('message', (message) => {
if (message.content === 'info') {
const embed = new Discord.MessageEmbed()
.setColor('#0099ff')
.setTitle('关于本 Bot')
.setDescription('这是一个演示用的 Discord 机器人。')
.setThumbnail(client.user.avatarURL())
.addFields(
{ name: '作者', value: 'Alice' },
{ name: '版本', value: '1.0.0' },
{ name: 'GitHub', value: 'https://github.com/example' },
)
.setTimestamp();
const channel = message.channel;
channel.send(embed);
}
});
client.login('您的 Bot Token');
在上面的示例中,当机器人接收到 info
消息时,它会向同一频道发送一条 Embeds 消息,包括关于本机器人的信息。
Discord.Message
对象有一些方法可以用来响应用户对消息的回应(Reaction)。Message.react()
方法可以在消息上添加一个所需的 Reaction。
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log('已登录 Discord!');
});
client.on('message', (message) => {
if (message.content === 'vote') {
message.react('👍')
.then(() => message.react('👎'))
.catch(() => console.error('无法添加 Reaction!'));
}
});
client.login('您的 Bot Token');
在上面的示例中,当机器人接收到 vote
消息时,它会在该消息上添加两个 Reaction:👍 和 👎。
除了接收到消息外,Discord.Client
还可以响应其他各种 Discord 事件,包括服务器成员加入、离开、被禁言等等。每个事件都有相应的名称和一组回调函数。以下是一些示例:
client.on('guildMemberAdd', (member) => {
const channel = member.guild.systemChannel;
if (channel) {
channel.send(`欢迎 ${member} 加入了我们的服务器!`);
}
});
client.on('guildMemberRemove', (member) => {
const channel = member.guild.systemChannel;
if (channel) {
channel.send(`${member} 已经离开了我们的服务器。`);
}
});
client.on('voiceStateUpdate', (oldState, newState) => {
const channel = newState.channel;
if (channel) {
channel.members.forEach((member) => {
member.roles.add('voice-active');
});
}
});
在上面的示例中,我们使用 client.on()
方法监听了三个 Discord 事件:guildMemberAdd
、guildMemberRemove
和 voiceStateUpdate
。当这些事件发生时,机器人将在相关频道上发送一条消息,并将语音频道内所有成员的用户角色设置为 voice-active
。
为了保持代码整洁并使其易于阅读和维护,请务必按照以下最佳实践实现您的 Discord 机器人:
.js
文件来存储您的机器人代码。dotenv
或 config
等库,从环境变量中获取您的机器人凭据信息,而不是在代码中直接写入。希望这篇文章对您有帮助,并希望您能够创建出令人震惊的 Discord 机器人。