首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用DM信道

引用DM信道
EN

Stack Overflow用户
提问于 2018-12-03 13:05:55
回答 1查看 4.3K关注 0票数 0

我正在尝试创建一个命令,允许用户按照DM中的提示创建密码。我能够向用户发送消息,但无法读取用MessageCollector发送的消息,因为我无法找到引用DM通道的方法。

我尝试在这里使用另一个bot.on("message", message)实例,但这会在系统中产生漏洞,导致第二个实例永远不会消失。

我也不能让用户使用命令,比如!CreatePassword ***,因为这个函数是按严格顺序与许多其他函数链接的。

也许我做了一些根本错误的事情,或者以一种糟糕的方式处理问题,但是我需要一种方法来引用DM频道。

到目前为止,这是我的代码最好的迭代。

代码语言:javascript
复制
function createAccount(receivedMessage, embedMessage)
{
    const chan = new Discord.DMChannel(bot, receivedMessage.author);

    const msgCollector = new Discord.MessageCollector(chan , m => m.author.id == receivedMessage.author.id);
    msgCollector.on("collect", (message) => 
    {
        // Other Code
        msgCollector.stop();
        // Removing an embed message on the server, which doesn't have a problem.
        embedMessage.delete();
    })
}

如果需要的话,我可以展示我剩下的代码。

谢谢您抽时间见我。我为此整晚都睡不着觉。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-03 18:01:59

我会这样做(我假设receivedMessage是触发命令的消息,如果我错了,请纠正我)

代码语言:javascript
复制
async function createAccount(receivedMessage, embedMessage) {
  // first send a message to the user, so that you're sure that the DM channel exists.
  let firstMsg = await receivedMessage.author.send("Type your password here");

  let filter = () => true; // you don't need it, since it's a DM.
  let collected = await firstMsg.channel.awaitMessages(filter, {
      maxMatches: 1, // you only need one message
      time: 60000 // the time you want it to run for
    }).catch(console.log);

  if (collected && collected.size > 0) {
    let password = collected.first().content.split(' ')[0]; // grab the password
    collected.forEach(msg => msg.delete()); // delete every collected message (and so the password)
    await firstMsg.edit("Password saved!"); // edit the first message you sent
  } else await firstMsg.edit("Command timed out :("); // no message has been received

  firstMsg.delete(30000); // delete it after 30 seconds
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53594478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档