在特定频道中重定向 Discord DM

Posted

技术标签:

【中文标题】在特定频道中重定向 Discord DM【英文标题】:Redirecting Discord DM in a specific channel 【发布时间】:2020-10-18 16:20:26 【问题描述】:

我开始使用 discord.js 编写一个不和谐机器人,但我无法找到一种方法让该机器人将接收到的消息重定向到我服务器上的特定频道中作为嵌入。

到目前为止,这是我的代码:

const Discord = require("discord.js");
const client = new Discord.Client();


client.on('ready', () => 
    console.log('Logged in!');
);

client.on('message', msg => 
    if (msg.channel.type == "dm") 
        msg.author.send("bruh dming me has literally no point");
        return;
        const messageEmbed = 
            color: 0x00ff00,
            title: 'Received DM',
            author: 
                name: 'Me'
            ,
            description: 'I received the following DM:',
            thumbnail: 
            ,
            fields: [
                
                    name: 'Author:',
                    value: message.author,
                ,
                
                    name: 'Message:',
                    value: messageEmbed,
                    inline: false,
                ,
            ],
        
        client.channels.cache.get('726515463017988176').send(messageEmbed)
    
);

client.login('this is where my token was but i had to replace it lol');

client.on('message', message => 
    console.log(message.content);
    if (message.channel.type === 'text') 
        if (message.content === '!ip') 
            message.channel.send('[insert server ip here]');
        
    
);

PS:你可能会说,我是 JS 新手。

编辑:我现在设法让它开始工作,它会发送聊天中收到的每条消息,但也会发送每个答案 (msg.author.send("bruh dming me has literally no point");)。有没有办法跳过带有特定内容的消息?有没有办法将重定向的消息嵌入日期、作者和消息?

我现在的代码:

const Discord = require("discord.js");
const client = new Discord.Client();


client.on('ready', () => 
    console.log('Logged in!');
);

client.on('message', msg => 
    if (msg.channel.type == "dm") 
        msg.author.send("bruh dming me has literally no point");
//      return;
        const messageEmbed = 
            color: 0x00ff00,
            title: 'Recieved DM',
            author: 
                name: 'Me'
            ,
            description: 'I recieved the following DM:',
            thumbnail: 
            ,
            fields: [
                
                    name: 'Author:',
                    value: msg.author,
                ,
                
                    name: 'Message:',
                    value: msg.content,
                    inline: false,
                ,
            ],
        
//      if (msg.content) == "bruh dming me has literally no point")
        client.channels.cache.get('726515463017988176').send(msg.content)
        client.channels.cache.get('726515463017988176').send(msg.author)
    
);

client.login('tokentokentokentokentokentokentoken(secret)');

client.on('message', message => 
    console.log(message.content);
    if (message.channel.type === 'text') 
        if (message.content === '!ip') 
            message.channel.send('[insert server ip here]');
        
    
);

可能是最后一次编辑: 我设法通过使用另一个嵌入模板让它工作。代码:

const Discord = require("discord.js");
const client = new Discord.Client();

client.login('you probably already know what belongs here xd')

client.on('ready', () => 
    console.log('Logged in!')
);

client.on('message', message => 
    if (message.channel.type === "dm" && message.author.id !== client.user.id) 
        console.log("-----DM-----")
        console.log(message.content)
        console.log(message.author.tag)
        console.log("-----DM-----")
        message.author.send("bruh dming me has literally no point");
        client.channels.cache.get('726919268142415973').send(
                embed: 
                color: 0x8b0000,
                    author: 
                        name: "I recieved the following DM:",
                        icon_url: message.author.avatarURL
                    ,
                    title: message.author.tag,
                    description: message.content,
                    timestamp: new Date(),
                    footer: 
                        icon_url: client.user.avatarURL,
                        text: "Staff"
                    
                
        );
    
);

【问题讨论】:

欢迎来到 Stack Overflow!请花一分钟阅读How do I ask a good question?。你能告诉我们更多关于你已经尝试过的事情吗? :) 【参考方案1】:

在您的client.on('message') 回调中,您有return,它结束了函数的执行。这意味着它之后的任何代码(在同一函数中)都无法访问。如果你删除它应该可以工作。

return | MDN callback function | MDN

虽然是可选的,但最好确保每条语句都以分号结束。

【讨论】:

嗨!首先感谢您的快速回复!我删除了它,但现在它没有响应消息并且崩溃并出现以下错误:ReferenceError: message is not defined 那是因为您将其定义为“msg”,而不是“message”。在您错误使用“消息”的行上使用“味精”。 对于你的第二个字段值,你有 messageEmbed 这真的没有意义。你的意思是msg.content messageEmbed 是我想用来将数据重定向到频道的嵌入。【参考方案2】:

您可能需要替换以下两行:

client.channels.cache.get('726515463017988176').send(msg.content);
client.channels.cache.get('726515463017988176').send(msg.author);

与:

client.channels.cache.get('726515463017988176').send(messageEmbed);

【讨论】:

我更换了它,嵌入不起作用,可能是嵌入本身有问题吗? @Delight 可能会尝试删除空的thumbnail 部分? 我使用了不同的嵌入模板,现在它可以工作了。生病把代码放在编辑中。【参考方案3】:

如果您不希望机器人也发送它的答案,您可以添加将第一个 if 语句替换为以下内容:

if (msg.channel.type === "dm" && message.author.id !== client.user.id) 

希望这会有所帮助:)

【讨论】:

以上是关于在特定频道中重定向 Discord DM的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jpa 和 Thymeleaf 在 Spring Boot 中重定向页面

在CodeIgniter中重定向整个站点不起作用

在 Razor 页面中重定向到带有 ID 的页面

如何在 Django 中重定向到不同的 URL?

如何在 IBM Worklight 中重定向到同一页面但不同的 div/视图?

linux中重定向学习总结