1
0
mirror of https://github.com/toast-ts/Daggerbot-TS.git synced 2024-09-30 00:50:59 -04:00
Daggerbot-TS/src/events/messageCreate.ts

164 lines
10 KiB
TypeScript
Raw Normal View History

import Discord, { ChannelType } from 'discord.js';
2022-11-13 08:46:50 -05:00
import { TClient } from '../client';
export default {
name: 'messageCreate',
execute: async(client:TClient, message:Discord.Message)=>{
2022-11-13 08:46:50 -05:00
if (message.author.bot) return;
if (message.channel.type === ChannelType.DM) return;
const msgarr = message.content.toLowerCase().split(' ');
2022-11-19 05:17:04 -05:00
let automodded: boolean;
2022-11-13 08:46:50 -05:00
function onTimeout(){
delete client.repeatedMessages[message.author.id]
}
const Whitelist = [
// Arrary of channel ids for automod to be disabled in
]
if (client.bannedWords._content.some((x)=>msgarr.includes(x)) && !message.member.roles.cache.has(client.config.mainServer.roles.dcmod) && message.guildId == client.config.mainServer.id && !Whitelist.includes(message.channelId) && client.config.botSwitches.automod){
2022-11-13 08:46:50 -05:00
automodded = true;
2022-11-18 22:23:33 -05:00
message.delete().catch((err)=>{
2022-11-19 05:17:04 -05:00
console.log('bannedWords automod; msg got possibly deleted by another bot.')
2022-11-18 22:23:33 -05:00
})
message.channel.send('That word is banned here.').then((x)=>setTimeout(()=>x.delete(), 5000));
2022-11-13 08:46:50 -05:00
if (client.repeatedMessages[message.author.id]){
// add this message to the list
client.repeatedMessages[message.author.id].set(message.createdTimestamp, {cont: 0, ch: message.channelId});
// reset timeout
clearTimeout(client.repeatedMessages[message.author.id].to);
client.repeatedMessages[message.author.id].to = setTimeout(onTimeout, 30000);
// this is the time in which 4 messages have to be sent, in milliseconds (ms)
const threshold = 30000;
// message mustve been sent after (now - threshold), so purge those that were sent earlier
client.repeatedMessages[message.author.id] = client.repeatedMessages[message.author.id].filter((x, i)=>i >= Date.now() - threshold)
2022-11-13 08:46:50 -05:00
// a spammed message is one that has been sent atleast 4 times in the last threshold milliseconds
const spammedMessage = client.repeatedMessages[message.author.id]?.find((x)=>{
return client.repeatedMessages[message.author.id].size >= 4;
2022-11-13 08:46:50 -05:00
});
// if a spammed message exists;
if (spammedMessage){
// mute
2022-12-01 17:53:57 -05:00
const muteResult = await client.punishments.addPunishment('mute', { time: '30m' }, (client.user as Discord.User).id, 'Automod; Banned words', message.author, message.member as Discord.GuildMember);
2022-11-13 08:46:50 -05:00
// and clear their list of long messages
delete client.repeatedMessages[message.author.id];
}
} else {
client.repeatedMessages[message.author.id] = new client.collection();
client.repeatedMessages[message.author.id].set(message.createdTimestamp, {cont: 0, ch: message.channelId});
// autodelete after 30 secs
client.repeatedMessages[message.author.id].to = setTimeout(onTimeout, 30000);
}
}
2022-12-07 07:02:50 -05:00
if (message.content.toLowerCase().includes('discord.gg/') && !message.member.roles.cache.has(client.config.mainServer.roles.dcmod) && message.guildId == client.config.mainServer.id && !Whitelist.includes(message.channelId)) {
2022-11-13 08:46:50 -05:00
automodded = true;
2022-11-18 22:23:33 -05:00
message.delete().catch((err)=>{
2022-11-19 05:17:04 -05:00
console.log('advertisement automod; msg got possibly deleted by another bot.')
2022-11-18 22:23:33 -05:00
})
2022-12-07 07:02:50 -05:00
message.channel.send('Advertising other Discord servers is not allowed.').then(x=>setTimeout(()=>x.delete(), 10000))
if (client.repeatedMessages[message.author.id]){
client.repeatedMessages[message.author.id].set(message.createdTimestamp,{cont:1,ch:message.channelId});
clearTimeout(client.repeatedMessages[message.author.id].to);
client.repeatedMessages[message.author.id].to = setTimeout(onTimeout, 60000);
const threshold = 60000;
client.repeatedMessages[message.author.id] = client.repeatedMessages[message.author.id].filter((x:any, i:number)=> i >= Date.now() - threshold)
const spammedMessage = client.repeatedMessages[message.author.id]?.find((x:any)=>{
return client.repeatedMessages[message.author.id].filter((y:any)=>x.cont === y.cont).size >= 4;
});
if (spammedMessage){
const muteResult = await client.punishments.addPunishment('mute', {time: '1h'}, (client.user as Discord.User).id, 'Automod; Discord advertisement', message.author, message.member as Discord.GuildMember);
delete client.repeatedMessages[message.author.id];
}
}else{
client.repeatedMessages[message.author.id] = new client.collection();
client.repeatedMessages[message.author.id].set(message.createdTimestamp, {cont: 1, ch: message.channelId});
client.repeatedMessages[message.author.id].to = setTimeout(onTimeout, 60000);
}
2022-11-13 08:46:50 -05:00
}
if (message.guildId == client.config.mainServer.id && !automodded){
client.userLevels.incrementUser(message.author.id); // Ranking incrementation
}
// Mop gifs from banned channels without Monster having to mop them.
const bannedChannels = [
'516344221452599306', // #mp-moderators
'742324777934520350', // #discord-moderators
]
const gifURL = [
'tenor.com/view',
'giphy.com/gifs',
'giphy.com/media'
]
if (gifURL.some(e=>message.content.toLowerCase().includes(e)) && bannedChannels.includes(message.channelId)) {
message.reply('Gifs are not allowed in this channel.').then((msg: any)=>message.delete())
2022-11-13 08:46:50 -05:00
}
// Autoresponse:tm:
if (client.config.botSwitches.autores && !automodded) {
2022-11-28 13:34:40 -05:00
const MorningArray = ['good morning all', 'good morning everyone', 'morning all', 'morning everyone', 'morning lads', 'morning guys']
const AfternoonArray = ['good afternoon', 'afternoon all']
const EveningArray = ['good evening', 'evening all', 'evening everyone']
const NightArray = ['night all', 'night everyone']
const PasswordArray = ['whats the password', 'what\'s the password', 'password pls']
const cantRead = ['i cant read', 'i can\'t read', 'cant read', 'can\'t read']
const NawdicBrokeIt = ['break', 'broke', 'broken']
const deadChat = ['dead chat', 'chat is dead', 'dead server']
2022-11-28 21:58:09 -05:00
if (message.mentions.members.has('309373272594579456') && !client.isStaff(message.member)){
2022-11-13 08:46:50 -05:00
message.reply('Please don\'t tag Daggerwin, read rule 14 in <#468846117405196289>')
}
if (message.mentions.members.has('215497515934416896') && !client.isStaff(message.member) && message.type != 19){
message.reply('Please don\'t tag Monster unless it\'s important!')
}
if (message.content.toLowerCase().startsWith(`*mp players`) || message.content.toLowerCase().startsWith(`*mp status`)){
2022-12-02 12:38:28 -05:00
message.reply('Prefix-based MP commands has moved to </mp players:1046516411591299233> and </mp status:1046516411591299233>')
}
if (message.content.toLowerCase().startsWith(`*lrs`) || message.content.toLowerCase().startsWith(`*rank`)){
2022-11-22 17:09:44 -05:00
message.reply('Prefix-based LRS command has moved to </rank view:1044732701317537877>')
}
if (message.content.toLowerCase().startsWith(`*mp series`) || message.content.toLowerCase().startsWith(`*mp info`)){
2022-12-02 12:38:28 -05:00
message.reply('Prefix-based MP info commands has moved to </mp series:1046516411591299233> and </mp info:1046516411591299233>')
2022-11-13 08:46:50 -05:00
}
if (PasswordArray.some(e=>message.content.toLowerCase().includes(e))){
2022-11-13 08:46:50 -05:00
message.reply('Password and other details can be found in <#543494084363288637>')
}
if (cantRead.some(e=>message.content.toLowerCase().includes(e))){
2022-11-13 08:46:50 -05:00
message.reply('https://tenor.com/view/aristocats-george-pen-cap-meticulous-gif-5330931')
}
if (message.content.toLowerCase().includes('is daggerbot working')){
message.reply('https://tenor.com/view/i-still-feel-alive-living-existing-active-singing-gif-14630579')
}
if (deadChat.some(e=>message.content.toLowerCase().includes(e))){
2022-11-13 08:46:50 -05:00
message.reply('https://cdn.discordapp.com/attachments/925589318276382720/1011333656167579849/F57G5ZS.png')
}
if (message.content.toLowerCase().includes('nawdic') && (NawdicBrokeIt.some(e=>message.content.toLowerCase().includes(e)))){
const embed = new client.embed().setTitle('*Nawdic has done an oopsie*').setImage('https://c.tenor.com/JSj9ie_MD9kAAAAC/kopfsch%C3%BCtteln-an-kopf-fassen-oh-no.gif').setColor(client.config.embedColor)
2022-11-13 08:46:50 -05:00
message.reply({embeds: [embed]})
}
if (MorningArray.some(e=>message.content.toLowerCase().startsWith(e))){
message.reply(`Good morning **${message.member.displayName}**!`)
2022-11-13 08:46:50 -05:00
}
if (AfternoonArray.some(e=>message.content.toLowerCase().startsWith(e))){
message.reply(`Afternoon **${message.member.displayName}**!`)
}
if (EveningArray.some(e=>message.content.toLowerCase().startsWith(e))){
message.reply(`Good evening **${message.member.displayName}**!`)
2022-11-13 08:46:50 -05:00
}
if (NightArray.some(e=>message.content.toLowerCase().startsWith(e))){
message.reply(`Night **${message.member.displayName}**`)
2022-11-13 08:46:50 -05:00
}
}
2022-11-13 08:46:50 -05:00
}
2022-11-23 03:04:14 -05:00
}