discord.js v12-每个公会的警告命令

时间:2020-05-27 11:44:56

标签: javascript node.js discord.js

我有warn command的脚本,对此我需要帮助,因为 代码有效时,此命令保存将在warnings.json中发出警告,但是当我警告某个警告出现在每个公会中的人时,我只希望在一个公会中发出警告。请帮忙:D

const { MessageEmbed } = require("discord.js")
const fs = require('fs')
const warns = JSON.parse(fs.readFileSync("./warnings.json", "utf8"))

const moment = require('moment')

module.exports = {
  name: "warn",
  description: "Wysyła ankiete",
  guildOnly: true,
  cooldown: 5,

  run(msg, args) {

    // Embed na permisjebota
    const permisjebota = new MessageEmbed()
    .setTitle("⛔ Nie mam uprawnień! :O")
    .setColor('ffff00')
    .setDescription("Nie mam uprawnień do tej komendy! Daj mi uprawnienia lub skonsultuj się z adminem serwera")
    .setTimestamp()
    // Embed na permisje dla użytkownika
    const permisje = new MessageEmbed()
    .setTitle("Nie masz permisji do tej komendy! :O")
    .setColor('ffff00')
    .setDescription("Nie masz uprawnień do tej komendy! Jeżeli uważasz, że to błąd skonsultuj się z adminem serwera!")

    if (!msg.member.guild.me.hasPermission("ADMINISTRATOR"))
        return msg.channel.send(permisjebota)
    if (!msg.member.hasPermission("MANAGE_MESSAGES")) return msg.channel.send(permisje)

    if(!args[0, 1]) {
        const bananekbot = new MessageEmbed()
        .setTitle("Nie podałeś argumentów!")
        .setColor('ffff00')
        .setDescription("Poprawne użycie: `m!warn <nick> <powód>`")
        return msg.channel.send(bananekbot)
    }

    var warnUser = msg.guild.member(msg.mentions.users.first() || msg.guild.members.get(args[0]))

    var reason = args.slice(1).join(" ")

    if (!warnUser) return msg.channel.send("Brak argumentu poprawne użycie: m!warn <nick> <powód>")

    if (!warns[warnUser.id]) warns[warnUser.id] = {
        warns: 0,
    } 

    warns[warnUser.id].warns++

    fs.writeFile("./warnings.json", JSON.stringify(warns), (err) =>{
        if(err) console.log(err)
    })

    const warnembed = new MessageEmbed()
    .setTitle("✅ Nadano warna")
    .setColor('ffff00')
    .setTimestamp()
    .setDescription(`Użytkownik: ${warnUser} (${warnUser.id})
    Nadający warna: ${msg.author}
    Powód: ${reason}`)
    return msg.channel.send(warnembed)
  }
}

1 个答案:

答案 0 :(得分:0)

对此的一种潜在解决方案是将warnings.json作为数组,并在其中包含具有行业ID的对象,警告以及您需要存储的任何其他内容。因此warnings.json最终会变成这样。

[
    {
        "guild_id": "12345678901234",
        "an_extra": "Thing",
        "warns": [
            "your_warns",
            "are_here",
            "store_in_any_format"
        ]
    },
    {
        "guild_id": "12345678901234",
        "an_extra": "Guild",
        "warns": [
            "so_on",
            "And so forth",
            "go the warns and guilds"
        ]
    }
]

这样,您可以简单地进行Array.find(guild => guild.guild_id === msg.guild.id)(假设您要访问的行会是msg.guild)。

MDN上了解有关Array.prototype.find()的更多信息

相关问题