Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript discord.js获取消息';s id并将其删除_Javascript_Node.js_Discord_Discord.js - Fatal编程技术网

Javascript discord.js获取消息';s id并将其删除

Javascript discord.js获取消息';s id并将其删除,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,当用户加入服务器时,bot会发送一条欢迎消息,我想获取该欢迎消息的ID,如果用户加入后离开,bot会将其删除。我试图将消息的id保存在一个变量中,并让bot在用户离开时删除消息,但没有成功。我已经看过文档了,但我真的不知道如何制作。要做到这一点,您必须存储欢迎消息的id以及它所绑定的用户(理想情况下将其放在一个对象中)。当用户离开时,您将使用这些值删除该消息 示例代码: const Discord = require('discord.js'); const client = new Disco

当用户加入服务器时,bot会发送一条欢迎消息,我想获取该欢迎消息的ID,如果用户加入后离开,bot会将其删除。我试图将消息的id保存在一个变量中,并让bot在用户离开时删除消息,但没有成功。我已经看过文档了,但我真的不知道如何制作。

要做到这一点,您必须存储欢迎消息的id以及它所绑定的用户(理想情况下将其放在一个对象中)。当用户离开时,您将使用这些值删除该消息

示例代码:

const Discord = require('discord.js');
const client = new Discord.Client();
const welcomeChannel = client.channels.find("name","welcome"); // Welcome is just an example 
let welcomes = [];

client.on('message', (message) => {
    if(message.channel.name === 'welcome') {
        const welcomeObj = { id: message.id, user: message.mentions.users.first().username };
        welcomes.push(welcomeObj);
    }
});

client.on('guildMemberRemove', (member) => {
    welcomes.forEach(welcome, () => {
        if(welcome.user === member.user.username) {
            welcomeChannel.fetchMessage(welcome.id).delete();
        }
    });
});
这仅在欢迎消息中包含对用户的提及时有效,因此请确保这是在欢迎消息中


此外,我目前无法亲自测试此代码,因此如果您遇到任何问题,请告诉我。

要执行此操作,您必须存储欢迎消息的id及其绑定的用户(理想情况下,将其放入对象中)。当用户离开时,您将使用这些值删除该消息

示例代码:

const Discord = require('discord.js');
const client = new Discord.Client();
const welcomeChannel = client.channels.find("name","welcome"); // Welcome is just an example 
let welcomes = [];

client.on('message', (message) => {
    if(message.channel.name === 'welcome') {
        const welcomeObj = { id: message.id, user: message.mentions.users.first().username };
        welcomes.push(welcomeObj);
    }
});

client.on('guildMemberRemove', (member) => {
    welcomes.forEach(welcome, () => {
        if(welcome.user === member.user.username) {
            welcomeChannel.fetchMessage(welcome.id).delete();
        }
    });
});
这仅在欢迎消息中包含对用户的提及时有效,因此请确保这是在欢迎消息中

此外,我目前无法亲自测试此代码,因此如果遇到任何问题,请告诉我

  • 定义一个对象以按公会和用户保存欢迎消息。您可能希望使用JSON文件或数据库(我强烈推荐后者)来更可靠地存储它们
  • 当用户加入公会时。。。
    • 发送您的欢迎信息
    • 将消息的ID与对象内部的帮会内的用户配对
  • 当会员离开公会时。。。
    • 去拿他们的欢迎信
    • 从Discord和对象中删除消息
  • 设置示例:

    constWelcomeMessages={};
    
    client.on('guildMemberAdd',异步成员=>{
    const welcomeChannel=client.channels.get('channelIDHere');
    如果(!welcomeChannel)返回console.error('无法找到欢迎频道');
    试一试{
    const message=wait welcomeChannel.send(`Welcome,${member}.`);
    如果(!welcomeMessages[member.guild.id])welcomeMessages[member.guild.id]={};
    welcomeMessages[member.guild.id][member.id]=message.id;
    }捕捉(错误){
    console.error('发送欢迎消息时出错…\n',err);
    }
    });
    
    client.on('guildMemberRemove',异步成员=>{
    const welcomeChannel=client.channels.get('channelIDHere');
    如果(!welcomeChannel)返回console.error('无法找到欢迎频道');
    试一试{
    const message=wait welcomeChannel.fetchMessage(welcomeMessages[member.guild.id][member.id]);
    如果(!消息)返回;
    等待消息。删除();
    删除welcomeMessages[member.guild.id][member.id];
    }捕捉(错误){
    console.error('删除现有欢迎邮件时出错…\n',err);
    }
    });
    
  • 定义一个对象以按公会和用户保存欢迎消息。您可能希望使用JSON文件或数据库(我强烈推荐后者)来更可靠地存储它们
  • 当用户加入公会时。。。
    • 发送您的欢迎信息
    • 将消息的ID与对象内部的帮会内的用户配对
  • 当会员离开公会时。。。
    • 去拿他们的欢迎信
    • 从Discord和对象中删除消息
  • 设置示例:

    constWelcomeMessages={};
    
    client.on('guildMemberAdd',异步成员=>{
    const welcomeChannel=client.channels.get('channelIDHere');
    如果(!welcomeChannel)返回console.error('无法找到欢迎频道');
    试一试{
    const message=wait welcomeChannel.send(`Welcome,${member}.`);
    如果(!welcomeMessages[member.guild.id])welcomeMessages[member.guild.id]={};
    welcomeMessages[member.guild.id][member.id]=message.id;
    }捕捉(错误){
    console.error('发送欢迎消息时出错…\n',err);
    }
    });
    
    client.on('guildMemberRemove',异步成员=>{
    const welcomeChannel=client.channels.get('channelIDHere');
    如果(!welcomeChannel)返回console.error('无法找到欢迎频道');
    试一试{
    const message=wait welcomeChannel.fetchMessage(welcomeMessages[member.guild.id][member.id]);
    如果(!消息)返回;
    等待消息。删除();
    删除welcomeMessages[member.guild.id][member.id];
    }捕捉(错误){
    console.error('删除现有欢迎邮件时出错…\n',err);
    }
    });
    
    您能否发布您编写的未成功代码?向其他人提供一些上下文是很有帮助的,特别是如果它包含了一种复制您已经尝试过的内容的方法。查看这篇关于如何提出一个好问题的堆栈溢出文章。我丢失了我尝试的代码,无论如何,这是错误的,我尝试将消息获取到一个变量,然后获取该变量id并删除mesagge。我可以问一个很好的问题,你可以在我的个人资料上看到其他的问题,但是在这场追逐中我真的不知道如何开始。你能把你写的代码贴出来吗?它没有成功?向其他人提供一些上下文是很有帮助的,特别是如果它包含了一种复制您已经尝试过的内容的方法。查看这篇关于如何提出一个好问题的堆栈溢出文章。我丢失了我尝试的代码,无论如何,这是错误的,我尝试将消息获取到一个变量,然后获取该变量id并删除mesagge。我问一个好问题没有问题,你可以在我的个人资料上看到其他人,但在这场追逐中,我真的不知道如何开始。