Javascript 如何将我的许多if语句转换为switch语句?Discord.js

Javascript 如何将我的许多if语句转换为switch语句?Discord.js,javascript,discord,discord.js,Javascript,Discord,Discord.js,我对JavaScript非常陌生,所以如果这是一个荒谬的问题,我道歉 这是我的密码: client.on('message', message => { if (message.content === '!rule1') { message.channel.send('Rule 1: **Don\'t be annoying.**'); } if (message.content === '!rule2') { message.cha

我对JavaScript非常陌生,所以如果这是一个荒谬的问题,我道歉

这是我的密码:

client.on('message', message => {
    if (message.content === '!rule1') {
        message.channel.send('Rule 1: **Don\'t be annoying.**');
    }
    if (message.content === '!rule2') {
        message.channel.send('Rule 2: **Leaving the server during your crypt sentence will result in a permanent ban. 3 strikes and you\'re out.**');
    }
    if (message.content === '!rule3') {
        message.channel.send('Rule 3: **Watch your language.**');
    }
    if (message.content === '!rule4') {
        message.channel.send('Rule 4: **No NSFW content of any kind.**');
    }
    if (message.content === '!rule5') {
        message.channel.send('Rule 5: **No racism, homophobia, or other hate speech is allowed whatsoever.**');
    }
    if (message.content === '!rule6') {
        message.channel.send('Rule 6: **Moderators\' discretion.**');
    }
    if (message.content === '!rule7') {
        message.channel.send('Rule 7: **Don\'t randomly ping roles or people for no reason.**');
    }
    if (message.content === '!rule8') {
        message.channel.send('Rule 8: **No spam allowed whatsoever.** Spam will result in a delete and warn, and a crypt sentence if continued.');
    }
    if (message.content === '!rule9') {
        message.channel.send('Rule 9: Please speak English at all times! Non-English messages are subject to deletion.');
    }
    if (message.content === '!rule10') {
        message.channel.send('Rule 10: **Please avoid talking about triggering topics.**');
    }
    if (message.content === '!rule11') {
        message.channel.send('Rule 11: **Please censor all personally identifiable info from images and text.**');
    }
    if (message.content === '!rule12') {
        message.channel.send('Rule 12: **Please keep bot commands in <#620789282226962464>**.');
    }
    if (message.content === '!rule13') {
        message.channel.send('Rule 13: **Posting gore is an instant deletion of your message(s) and permanent ban.**');
    }
    if (message.content === '!rule14') {
        message.channel.send('Rule 14: **YOU MUST BE 13 YEARS OF AGE OR OLDER TO USE THIS SERVER.**');
    }
    if (message.content === '!rule15') {
        message.channel.send('Rule 15: **Politics are strictly banned from the server.**');
    }
    if (message.content === '!rule16') {
        message.channel.send('Rule 16: **Don\'t name yourself stupid things.**');
    }
    if (message.content === '!rule17') {
        message.channel.send('Rule 17: **No bright flashing media of any kind, including emotes.**');
    }
    if (message.content === '!rule18') {
        message.channel.send('Rule 18: **No Gacha edits.**');
    }
    if (message.content === '!rule19') {
        message.channel.send('Rule 19: **Keep conversation civil and appropriate.**');
    }
    if (message.content === '!rule20') {
        message.channel.send('Rule 20: **No edgy, dark or offensive jokes or memes.**');
    }
    if (message.content === '!rule21') {
        message.channel.send('Rule 21: **No threats or considerations of ||self-harm|| or ||suicide|| in the server.**');
    }
    if (message.content === '!rule22') {
        message.channel.send('Rule 22: **Anything that violates Discord TOS will get you immediately banned.**');
    }
    if (message.content === '!rule23') {
        message.channel.send('Rule 23: **Do not sexualize/ship any of the moderators, or any members of the server for that matter.**');
    }
    if (message.content === '!strikeappeal') {
        message.channel.send('If you would like to appeal a strike, you can DM <@738765589748645908>. Simply explain why you got that strike, why you think it should be removed, and apologize.');
    }
});
我想当我说这个代码看起来很长很凌乱时,你可以同意我的说法。有没有办法缩短这个代码?我不知道如何把它转换成switch语句之类的东西。提前感谢

2个选项:

将除第一个if语句之外的所有if语句更改为else if 这几乎与开关相同,只需最少的调整 阅读switch语句的工作原理
备注:不要忘记案例结束时的中断,否则下一个案例也会执行。

正如@Andreas所建议的,将您的规则放入一个对象中,然后使用一些通用代码来提取相应的规则

常量规则={ “!rule1”:“规则1:*别那么烦人。**”, “!rule2':”规则2:*在你被判入狱期间离开服务器将导致永久禁令。3次罢工,你就出局了。**” }; //等 client.on'message',message=>{ const ruleText=规则[message.content]; 如果规则文本{ message.channel.sendruleText; }否则{ //正常信息 }
}; 我已经修改了您的代码,以减少重复部分,并使生成新命令和添加新规则变得更容易。但是,不要键入像这样的内容!规则3,你必须打字!规则3

有关如何扩展bot的更多信息,请阅读

常量前缀='!'; 常量规则=[ **别这么烦人。**, **在您的密码判决期间离开服务器将导致永久禁令。3次攻击,您将退出。**, **注意你的语言。**, **无任何类型的NSFW内容。**, **不允许任何种族主义、仇视同性恋或其他仇恨言论。**, **主持人的自由裁量权。**, **不要无缘无故地随机ping角色或人员。**, **不允许任何垃圾邮件。**垃圾邮件将导致删除和警告,如果继续,将导致加密语句。, **请始终说英语!非英语邮件可能会被删除。**, **请避免谈论触发话题。**, **请检查图像和文本中的所有个人识别信息。**, **请将bot命令保存在。**, **发布gore是即时删除您的邮件并永久禁止。**, **您必须年满13岁才能使用此服务器。**, **服务器上严禁使用政治。**, **不要给自己起愚蠢的名字。**, **没有任何类型的明亮闪烁媒体,包括表情。**, **无Gacha编辑。**, **保持谈话的礼貌和适当。**, **没有急躁、黑暗或冒犯性的笑话或模因。**, **在服务器中没有自我伤害或自杀的威胁或考虑。**, **任何违反Discord TOS的行为都将立即被禁止。**, **不要将任何版主或服务器的任何成员性别化/发送** ]; client.on'message',message=>{ 如果message.author.bot | |!message.content.startsWithprefix返回; const args=message.content.sliceprefix.length.trim.split/\s+/g; const命令=args.shift.toLowercase; 开关命令{ 案例“规则”: if!args[0]返回消息。回复“**用法:*`!规则`”; args[0]=Numberargs[0];
如果!args[0]>0&&args[0]欢迎来到Stack Overflow!请带上“你得到一枚徽章!”并通读,尤其是你在这里的最佳选择是对相关主题进行研究,并试一试。如果你在做了更多的研究和搜索后陷入困境,并且无法摆脱困境,请发布你的尝试,并明确指出你的困境。人们会感到困惑lad提供帮助。使用对象或映射:const rules={!rule1:…,!rule2:…,…};谢谢,这个示例帮助我理解了正确的方法。
client.on('message', message => {
    switch (message.content) {
      case '!rule1': 
          message.channel.send('Rule 1: **Don\'t be annoying.**');
          break;
      case '!rule2':
          message.channel.send('Rule 2: **Leaving the server during your crypt sentence will result in a permanent ban. 3 strikes and you\'re out.**');
          break;
      case '!rule3':
            message.channel.send('Rule 3: **Watch your language.**');
        break;
      case '!strikeappeal':
          message.channel.send('If you would like to appeal a strike, you can DM <@738765589748645908>. Simply explain why you got that strike, why you think it should be removed, and apologize.');
          break;
        
      ...
      
      default:
            message.channel.send('Default message');
   }
});