目前正在为公会袭击创建“签到”命令

Posted

技术标签:

【中文标题】目前正在为公会袭击创建“签到”命令【英文标题】:Currently creating a 'check-in' command for guild raiding 【发布时间】:2019-04-14 16:57:32 【问题描述】:

我目前正在尝试为公会袭击创建一个“签到”机器人命令。

简单地说,只要用户输入!checkin,他们的用户名就会被注册到团队中。这将一直持续到团队成员满员为止。这是我当前的代码:

if (command === "checkin") 
  let team = [];
  team.push(message.member.displayName)

现在这段代码只向团队注册了 1 个用户,我知道这是因为每当调用该命令时,该数组都会设置为一个空数组。我将如何重写此代码以使其每当用户键入!checkin 时,它们将被推入数组,而当下一个人这样做时,他将被推入更新的数组而不是空数组?

【问题讨论】:

嗨,我要删除 push 标签,因为它是为了版本控制,而不是 Array.push() :) 【参考方案1】:

如果我是正确的,您的代码将如下所示:

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

client.on('message', msg => 
    // ... previous code
    if (command == 'checkin') 
        team.push(message.member.displayName);
    
)

问题是数组 'team' 未在正确的范围内定义。您应该在 client.on('message', msg => 块之外定义您的数组,如下所示:

const Discord = require('discord.js');
const client = new Discord.Client()
var team = [];

这将允许将数组推入消息函数内部,并仍保留其原始内容。

如果您想了解更多关于 javascript 变量作用域的信息,我发现这个网页帮助了我:https://www.w3schools.com/js/js_scope.asp

【讨论】:

以上是关于目前正在为公会袭击创建“签到”命令的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Discord API 返回错误 405 以向公会添加斜杠命令?

获取频道并循环播放 discord.net

Discord.js 公会特定命令

如何检查用户是不是在公会中

Android 使用GangSDK创建第三方家族公会系统经验分享

GitGit 标签使用 ( 创建并查询标签 | 推送单个标签到远程仓库 | 推送所有标签到远程仓库 | 删除远程仓库的标签 )