1
const toki1 = require('./something')
const Discord = require('discord.js');
const mod = new Discord.Client
let somearray = []

mod.on('ready', () => {
    console.log('I am ready. Please work I beg you')
})
mod.on('message', msg => {
    let linesplit = msg.content.split('\n')
    let unchanged = msg.content.split(' ')
    if(unchanged[0] != '*bot5' && !msg.author.bot){
       let thotus = msg.content.toLowerCase()
       somearray.forEach(swear => {
           
           let white = new RegExp(swear, "g")
           thotus = thotus.replace(white, `||${swear}||`)  
       }) 
       if (somearray.some(v => msg.content.toLowerCase().includes(v))) {
           
           msg.channel.send(`Sent by: ${msg.author.tag}, Censored by: MRModeration(bot 5)\n${thotus}`)
                .then(whil => {
                    msg.delete({timeout: 400})
                })
                .catch(rer => {
                  msg.channel.send(`we catched something\nget it\nbecause .catch()\n\nThe error is ${rer}`)
                  msg.delete({timeout: 400})
              
              
              })
       }
    
    } 
    if(unchanged[0] == '*bot5'){
        if(msg.member.hasPermission('ADMINISTRATOR') || msg.member.roles.cache.has('724326097306779699')){
        
        if(!unchanged[1]){
            msg.reply('you need something to do with this bot')
            return;
        } 
        switch(unchanged[1]){
            case 'msgdelete':
                
                if(!unchanged[2]){
                    msg.reply('you need something to send')
                    return;
                }
                if(isNaN(unchanged[2])){
                    msg.reply('you need a number')
                    return;
                }
                if(Number(unchanged[2]) < 1 || Number(unchanged[2]) > 100){
                    msg.reply('the amount needs to be between 1 and 100')
                    return;
                }
                if(!Number.isInteger(Number(unchanged[2]))){
                    msg.reply('it needs to be an integer(for obvious reasons)')
                    return;
                }

                    
                msg.channel.bulkDelete(Number(unchanged[2]) + 1, true)
                    .then(deleted => msg.channel.send(`I(bot 5) have deleted ${deleted.size - 1} message(s).`))
                    .catch(err => msg.reply(`something went wrong... \n\n **The presented error is** \n\n ${err}`))
                    
                
                break;
            case 'add':
                if(msg.member.roles.cache.has('730496872992735253')){
                if(!unchanged[2]){
                    msg.reply('what is it that you want to add???')
                } else {
                    let change = unchanged
                    change.splice(0, 2)
                    if(msg.author.bot){
                        return;
                    }
                    if(change.join(' ').length == 1 || change.join(' ').includes('|')){
                        msg.channel.send("this is either a letter, something that includes |.")
                        return;
                    }
                    
                    if(somearray.includes(change.join(' ').toLowerCase())){
                        msg.reply('already there')
                    } else {
                       somearray.push(change.join(' ').toLowerCase()) 
                       msg.channel.send(`${change.join(' ').toLowerCase()} is now in the list of swear words`)
                    }
                }
                } else {
                msg.channel.send('you do not have the role for this.')
                }
                break;
            case 'remove':
                if(msg.member.roles.cache.has('730496872992735253')){
                if(!unchanged[2]){
                    msg.reply('what is it that you want to remove???')
                } else {
                    let changer = unchanged
                    changer.splice(0, 2)

                    if(!somearray.includes(changer.join(' '))){
                        msg.reply('not an item that exists')
                    } else {
                        let sarray = somearray.filter(thing => thing != changer.join(' '))
                        somearray = sarray
                        msg.channel.send(`${changer.join(' ')} is now removed from the list of swear words`)
                    }
                }
                } else {
                msg.channel.send('you do not have the role for this.')
                }
                break;
            default:
                msg.reply('not a command yet')
                break;
            
        }
        } else {
            msg.reply('you are neither an admin nor a moderator.')
                .then(good => {
                    good.delete({ timeout: 3000 })
                    msg.delete({ timeout: 6000 })
                .catch(err => {
                    msg.channel.send(`Seemingly an error appeared\n\n***__badumm__***\n***__badumm__***\n***__badumm__***\n the error is \n\n ${err}`)
                })
                
                })
            
        }
        

    }
    if(msg.content.startsWith('*swearwords')){
        const joiner = somearray.join('\n')
        const embid = new Discord.MessageEmbed()
            .setTitle('All swear words in the list') 
            .attachFiles('./yesyesyes.png')
            .setImage("attachment://yesyesyes.png")   
            .addField('*All swear words*', `[\n${joiner}\n]`)
        msg.channel.send(embid)
                
            
        
    }
    if(linesplit[0] == '*warn'){
        if(msg.member.hasPermission('ADMINISTRATOR') || msg.member.roles.cache.has('724326097306779699')){
            if(linesplit.length < 3){
                msg.channel.send(`you need *warn, then on another line the user's tag and another line the warn`)
                return;
            }
            if(msg.guild.members.cache.find(member => member.user.tag == linesplit[1])){
                if(msg.guild.members.cache.find(member => member.user.tag == linesplit[1]).hasPermission('ADMINISTRATOR') || msg.guild.members.cache.find(member => member.user.tag == linesplit[1]).roles.cache.has('724326097306779699')){
                    msg.reply(`you can't warn admins or mods`)
                } else {
                    let grad = linesplit
                    a.splice(0, 2)
                    let gradon = grad.join('\n')
                    msg.guild.members.cache.find(member => member.user.tag == linesplit[1]).user.send(`__***Warned by: ${msg.author.tag}***__\nThe warning is(because):\n${gradon}`)
                }

            } else {
                msg.reply(`not a user's tag`)
            }
        } else {
            msg.reply('not allowed')
        }
    }         
})
mod.login(process.env.token)

我的想法是一个像这样工作的警告系统

*warn
the tag of the user
the reason for the warn.

(命令在最后)我还放了很多 if 语句来检查一切是否正确使用,就像检查警告器是否正确的语句一样。我可能不应该嵌套它们。

我遇到的问题是它没有使用标签向用户发送消息。它也不会产生错误。

msg.guild.members.cache.find(member => member.user.tag == linesplit[1]).user.send(`__***Warned by: ${msg.author.tag}***__\nThe warning is(because):\n${gradon}`)

我如何让这条线将消息发送给这个成员 DM。

4

1 回答 1

0

常用户会搜索提及 || 标签(例如hydrabolt#0001)|| 标识(例如42040040400404)。

无论您提供什么,它都会在公会中搜索成员

    if(linesplit[0] == '*warn'){
        if(msg.member.hasPermission('ADMINISTRATOR') || msg.member.roles.cache.has('724326097306779699')){
            if(linesplit.length < 3){
                msg.channel.send(`you need *warn, then on another line the user's tag and another line the warn`)
                return;
            }
            const user = msg.mentions.members.first() || msg.guild.members.cache.find(u => u.user.tag.toLowerCase() == linesplit[1].toLowerCase()) || msg.guild.members.cache.get(linesplit[1]) 
            if(!user) return msg.reply('not allowed')    
            if(user.hasPermission('ADMINISTRATOR') || user.roles.cache.has('724326097306779699')){
                    msg.reply(`you can't warn admins or mods`)
                } else {
                    let grad = linesplit
                    grad.splice(0, 2)
                    let gradon = grad.join('\n')
                    user.send(`__***Warned by: ${msg.author.tag}***__\nThe warning is(because):\n${gradon}`)
                }
    }         
 }
于 2020-07-09T13:32:32.593 回答