问题描述
我正在尝试设置机器人的.setActivity()
,但是它似乎不起作用,但是,如果我使用eval
命令进行设置,它实际上会设置并起作用。这是因为我尝试调用外部功能模块吗?
placeHolder(client,string) {
const owner = client.users.cache.get(client.config.admin.owner.id);
if (typeof string === "string") {
return string
.replace(/%totalCommands%/g,client.commands.array().length)
.replace(/%clientName%/g,client.name)
.replace(/%clientId%/g,client.user.id)
.replace(/%clientDescription/g,client.package.description)
.replace(/%clientUsername%/g,client.user.username)
.replace(/%clientTag%/g,client.user.tag)
.replace(/%clientDevName%/g,client.dev.name)
.replace(/%clientDevHelpers%/g,client.dev.helpers.join(","))
.replace(/%clientDefaultPrefix%/g,client.def.prefix)
.replace(/%clientGuildCount%/g,client.guilds.cache.size)
.replace(/%clientChannelCount%/g,client.channels.cache.size)
.replace(/%clientPackageName%/g,client.package.name)
.replace(/%clientVersion%/g,client.package.version)
.replace(/%clientLicense%/g,client.package.license)
.replace(/%clientAvatarURL%/g,client.avatar)
.replace(/%clientRepository%/g,client.package.repository)
.replace(/%clientAuthor%/g,client.package.author)
.replace(/%clientOwnerUsername%/g,owner.username)
.replace(/%clientOwnerTag%/g,owner.tag)
.replace(/%clientOwnerID%/g,owner.id)
.replace(/%clientMainFile%/g,client.package.main)
.replace(/%clientOwnerAvatarURL%/g,owner.avatarURL() || owner.defaultAvatarURL)
.replace(/%clientOriginalAuthor%/g,client.package.original_author);
} else {
return string;
}
}
-
ready
的事件处理程序:./resources/events/ready.js
const discord = require('discord.js');
const Essentials = require("../utils/essentials.js");
module.exports = {
name: "ready",// Event Name
async execute(
client,event
) {
let activity = {};
async function setActv() {
activity.type = client.config.client.presence.activity.default.name;
activity.status = client.config.client.presence.activity.status;
activity.name = await Essentials.placeHolder(client,client.config.client.presence.activity.default.name);
client.user.setActivity(activity.name,{
type: activity.type
});
client.user.setStatus(activity.status);
}
client.footer = Essentials.placeHolder(client,client.config.client.settings.footer);
try {
// Set Activity every 30 seconds
setInterval(async () => {
await setActv().catch(err => Essentials.log(client,error))
},5000);
} catch (error) {
Essentials.log(client,error);
}
// Bot Ready Log //
console.log(
`Logged in as ${client.user.tag}.\n`
+ `There are ${client.users.cache.size} users and/or bots online.\n`
+ `${client.user.tag} connected to:\n${client.guilds.cache
.map(g => g.name)
.join(",")}`
);
}
};
client.events = new discord.Collection();
var eventFiles = fs
.readdirsync(`./resources/events`)
.filter(file => file.endsWith(".js"));
for (var file of eventFiles) {
var event = require(`./resources/events/${file}`);
client.events.set(event.name,event);
console.log(`Loading event handler for event "${event.name}".`);
}
client.on("ready",async () => {
const event = client.events.get("ready");
if (event) {
try {
await event.execute(
client,event
)
} catch (err) {
Essentials.log(client,err)
}
}
});
const discord = require('discord.js');
const Essentials = require('../utils/essentials.js')
module.exports = {
id: "eval",name: "Eval",// Command name
description: "A simple eval tool to use on discord.",// Command Description
aliases: ["evl","ev"],// Command Aliases
category: "Utilities",cooldown: 5000,// Command cooldown
examples: ["eval message.author.id","eval process.cwd()"],// Command Examples
usage: ["<args>"],// Command Usage
permissions: ["SEND_MESSAGES","READ_MESSAGE_HISTORY"],// Command Permissions
memberPermissions: ["SEND_MESSAGES","READ_MESSAGE_HISTORY","MANAGE_SERVER"],// User is required to have these permissions
admin: true,// Command is admin only
async execute(client,command,message,args,auth,channel,guild) { // Function async execute()
// Command Starts Here
try {
let evaled = eval(args.join(" "));
if (typeof evaled !== "string") evaled = require("util").inspect(evaled);
const avtr = message.author.avatarURL() || message.author.defaultAvatarURL;
const embed = new discord.MessageEmbed()
.setAuthor(client.name,client.avatar)
.setTitle(command.name)
.setTimestamp()
.setColor(client.color.default)
.addField("**Input**",'```' + args.join(" ") + '```')
.addField("**Result**",'```' + Essentials.clean(evaled) + '```')
.setFooter(`${message.author.username} evaled`,avtr);
message.channel.send(embed);
} catch (err) {
const embed = Essentials.errorEmbed(err);
message.channel.send((embed),{ split: true });
}
}
};
我尝试了很多组合,从实际将其放置在事件处理程序之外,一直到bot.js
,直到实际使用eval()
为止,上面是我当前的代码。没有抛出任何错误代码,ready.js
中的所有其他组件(包括client.footer = ...
)都可以正常工作,除了设置活动外,我是否还错过了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)