Visual studio 多帮会成员日志discord.js v12

Visual studio 多帮会成员日志discord.js v12,visual-studio,discord.js,Visual Studio,Discord.js,是否有人知道如何做欢迎和留言,但它会在用户提到的频道中发送消息,因此不会在具有特定名称的特定频道中 示例:有人这样做?memberlog(频道)它放置他们提到的频道 注:我想学习,所以没有汤匙 注2:在你说建立数据库之前,解释一下如果你想建立数据库,请参见。 创建数据库后,必须将每个新用户记录到数据库中。您应该侦听事件guildMemberAdd和guildMemberRemove,并在数据库中添加或删除用户。之后,您可以使用.findAll()从数据库中获取用户。然后可以使用“.map()映射

是否有人知道如何做欢迎和留言,但它会在用户提到的频道中发送消息,因此不会在具有特定名称的特定频道中

示例:有人这样做?memberlog(频道)它放置他们提到的频道 注:我想学习,所以没有汤匙
注2:在你说建立数据库之前,解释一下如果你想建立数据库,请参见。 创建数据库后,必须将每个新用户记录到数据库中。您应该侦听事件
guildMemberAdd
guildMemberRemove
,并在数据库中添加或删除用户。之后,您可以使用
.findAll()
从数据库中获取用户。然后可以使用“.map()映射用户

const users=wait Members.findAll();
constall=users.map(i=>`${i.name}`);
all
应该是一个数组,您可以通过以下方式发送:

返回message.channel.send(all.join(',');
请记住,您必须先声明
成员
名称

此外,如果您不需要数据库,最好的选择是:

//获取公会并将其存储在变量“list”下
const list=client.guilds.get(“335507048017952771”);
var用户=“”;
//迭代从公会获得每个成员的用户名属性的公会成员集合
list.members.forEach(member=>users.concat(member.user.username));
返回消息.channel.send(用户);

好吧,为了简单起见,我将把你的问题缩小到

如何持久存储一个频道的ID,然后在我想要发送消息时获取该频道的ID

正如您所说,这里的要点是数据库。我建议您使用
SQLite
(一个单一文件、轻量级数据库)和
keyv
(一个简单的键值包装器,非常适合您的用途)。关于这方面的其他信息实际上不属于
discord.js
标记的范围,因此我将把您链接到一个关于使用它的好指南-->(通读了解有关使用keyv的基本知识)

提示:如果没有sqlite文件,只需创建它即可

无论如何,在完成初始阶段(并通过
npmi@keyv/SQLite
安装扩展SQLite包)之后,您的设置应该是这样的

const Keyv=require(“Keyv”)
const memberlogs=new Keyv(“sqlite://path/to/database/file.sqlite")
运用你的知识

基本上,您在
?memberlog
中要做的是获取频道名称(然后是所述频道的ID),获取公会ID,然后将公会ID设置为密钥,将频道ID设置为值

if(命令==“memberlog”){
//抓住频道提到
const proposedChannel=message.indications.channels.first()
//如果没有频道的话
if(!proposedChannel)返回message.channel.send(“提及频道,dumbo!”)
const guildID=message.guild.id
const proposedChannelID=proposedChannel.id
//设置键-->值
memberlogs.set(Guidid,proposedChannelID)
}
假设你知道一个会员刚刚加入/离开的公会,你可以这样做

//获取成员日志频道
const memberlogChannelID=memberlogs.get(membergoesher.guild.id)
const memberlogChannel=client.channels.cache.get(memberlogChannelID)
//一些代码
memberlogChannel.send(“嗨!”)

请注意,在这种情况下,我假设您已经为
guildMemberAdd
guildMemberRemove
案例设置了正确的事件侦听器。

为什么要使用完整的对象关系映射器?建议的人只需要简单的键值存储是的,但它将帮助他处理重大项目。此外,我认为他不需要数据库为了满足他提到的需求,获得用户。无论如何,keyv会简单得多,这是真的。