我在努力制造一个不和谐的机器人。基本上,我想做的是为服务器中的每个人分配一个“pts”变量。我的bot中有一个事件处理程序和命令处理程序。
这是我的事件处理程序。js:
const fs = require('fs');
module.exports = (client, Discord) =>{
const load_dir = (dirs) =>{
const event_files = fs.readdirSync(`./events/${dirs}`).filter(file => file.endsWith('.js'));
for (const file of event_files) {
const event = require(`../events/${dirs}/${file}`);
const event_name = file.split('.')[0];
client.on(event_name, event.bind(null, Discord, client));
}
}
['client', 'guild'].forEach(e => load_dir(e));
}
这是我的命令处理程序。js:
const fs = require('fs');
module.exports = (client, Discord) =>{
const command_files = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'))
for(const file of command_files){
const command = require(`../commands/${file}`);
if(command.name){
client.commands.set(command.name, command);
} else {
continue;
}
}
}
我还有一个guildMemberAdd事件,它有一个guildMember变量,向guildMember添加一个成员角色,并发出欢迎消息。在这里(它被称为guildMemberAdd.js):
module.exports = (Discord, client, guildMember) =>{
let welcomeRole = guildMember.guild.roles.cache.find(role => role.name === 'Member');
guildMember.roles.add(welcomeRole);
guildMember.guild.channels.cache.get(MYCHANNELID).send(`Welcome, <@${guildMember.user.id}>, to our server! ... Check out the rules-cmd channel!`);
}
我在想也许当有人加入服务器时,我可以给他们一个变量。例如:
module.exports = (Discord, client, guildMember) =>{
var pts = new guildMember;
let welcomeRole = guildMember.guild.roles.cache.find(role => role.name === 'Member');
guildMember.roles.add(welcomeRole);
guildMember.guild.channels.cache.get(MYCHANNELID).send(`Welcome, <@${guildMember.user.id}>, to our server! ... Check out the rules-cmd channel!`);
}
...但我对javaScript的使用非常糟糕,我知道,这肯定行不通。
有办法做到这一点吗?如果有,如何根据命令更改它?(我的命令存储在另一个文件夹中。)
如果你们需要,这是我的。。。嗯。。。文件和文件夹的排序。我不太清楚那叫什么。
非常感谢您的帮助!
我认为你们不需要节点模块文件,对吗?如果有,请评论。
我的编辑1(按TYRCNEX):你们中的一些人在查看这个问题时可能会说,“嗯,应该还有其他像这样的堆栈溢出问题,对吗?”是的,有。然而,正如我上面提到的,我是JS的完全初学者。我可以花一年的时间学习js的基础知识...
...但我手头没有那么多时间。我需要帮助解决我的具体问题,但我无法真正理解其他答案。这就是我问这个问题的原因。非常感谢。
首先,您需要某种类型的存储,可以保存行会成员的lvl和id,我建议您使用:
易于使用: QuickDb, Json DB
该数据库的问题在于,它们的可伸缩性较差,而且它们的权重越大,执行查询所需的时间就越多。
对于您当前的级别,数据库将让您了解所有数据库的工作方式,当您了解数据库的工作方式时,您应该期待一些数据库,如:Mongo、postgres等。
也许你们甚至不需要数据库,你们想把它作为对象保存在应用程序的缓存中,我会给你们一个快速的例子来说明它是如何完成的:
var members = {}
//You should know that for level's you shouldn't save all the members on guildmembersJoin
//Some the members won't last long on the server and even maybe leave right after and you will have
//a useless row in you db.
//Your message event
module.exports = (Discord, client, message) =>{
members = {
...members,
[message.member.id] : {
level: members[message.member.id] ? members[message.member.id].level : 0,
exp: members[message.member.id] ? members[message.member.id].exp : 0 + expformessage
}
}
}
以快速为例。db:
const db = require('quick.db');
module.exports = (Discord, client, message) =>{
if(!db.get(message.member.id))
db.set(message.member.id, {'level': 0, 'exp': expformessage})
else
db.set(`${message.member.id}.exp`, db.get(`${message.member.id}.exp`) + expformessage )
}
我使用repl。它让我的不和机器人。我使用Python并遵循本教程: https://www.youtube.com/watch?v=SPTfmiYiuok 这是我的代码:
Bot只是不工作:/Bot没有给出任何错误
我已经创建了一个bot,它现在在我的discord服务器中,使用下面的代码。 我的问题是,一旦我在与bot不和谐的聊天中,我如何调用命令让bot运行代码,为用户列表收集csv?我不确定如何调用机器人,一旦它在聊天/服务器中获得列表。
问题内容: 我正在使用Python处理User Discord Bot。如果机器人所有者键入内容,则该机器人将DM所有者提到的用户。 问题答案: 最简单的方法是使用扩展程序。在这里,我们使用转换器来获取目标用户,并使用仅关键字参数作为可选消息来发送目标用户: 对于discord.py的较新的1.0+版本,应使用而不是
我正在使用discord制作discord机器人。py和asyncio。bot有像和这样的命令,这显然不应该对普通用户可用。 我想制作一个简单的系统,它将使用以获取发送命令的用户。 我不希望bot检测到特定的角色名称,因为这些名称在不同的服务器上有所不同。我也不希望机器人有多个文件来保持简单。 我看到了不和谐。py文档和各种其他来源,但没有一个包含如何实现他们所讨论的各种方法的示例。 举个例子,这
我有一个不和谐机器人,定期检查数据库中的一些数据,如果有更新,它会向通道输出一些内容。所以我设置了一个每小时运行一次的函数。 当机器人被添加到多个服务器时,问题就出现了,在这些服务器中,消息只被发送到特定的,因此消息只被发送到我的服务器通道。本质上,我只向我的渠道发送通知,我怎么能向每个拥有我的机器人的渠道发送通知,这可能吗?