【发布时间】:2021-05-05 07:33:51
【问题描述】:
我创建了一个 discord.js 机器人,一段时间后我想添加一个服务器列表命令
为每个服务器发送一条嵌入的消息,其中包含:Server Name、Member Count、Server Avatar (As The Embed Thumbnail)、Server Owner ID 和最重要的是,我不希望任何人能够使用这个命令,除了我,所以也许我添加我的 ID 是常数?
我真的想不出它的代码,但无论如何......这是其中一个命令的格式:
if((args[0] === settings.prefix + "deletereactions" || args[0] === settings.prefix + "dr") && msg.member.hasPermission("ADMINISTRATOR")){
//deletereactions #channel
let channel = msg.mentions.channels.array()[0];
if(!channel) return;
let db = client1.db("rbot");
let collection = db.collection("reactions");
collection.deleteOne({channel : channel.id}, function(err){
if(err) console.log(err);
msg.reply("**✅ Done!**");
})
}
})
这是我的命令处理程序:
const settings = require("./settings.json");
const Discord = require("discord.js");
const client = new Discord.Client();
const fs = require("fs");
const MongoClient = require("mongodb").MongoClient;
const url = "my_mongodb_url";
const mongoClient = new MongoClient(url, { useUnifiedTopology: true });
const moment = require("moment");
const { CommandCursor } = require("mongodb");
let client1;
client.login(settings.token);
client.on("ready", ready =>{
console.log("Ready");
mongoClient.connect(function(err, cli){
client1 = cli;
})
client.user.setActivity(`${settings.activity}`, { type: 'LISTENING' })
})
client.on("message", async msg =>{
let args = msg.content.split(' ');
if(msg.channel.type !== "text") return;
if(msg.channel.type === "text"){
let db = client1.db("rbot");
let collection = db.collection("reactions");
collection.findOne({channel : msg.channel.id}, function(err, result){
if(err) console.log(err);
if(result){
for(let i = 0; i < result.reactions.length; i++){
msg.react(result.reactions[i]).catch(err =>{
if(err) collection.deleteOne({channel : msg.channel.id}, function(err){
if(err) console.log(err);
})
});
【问题讨论】:
标签: javascript node.js discord discord.js bots