Compare commits
No commits in common. "f6209936067167eb143850218d5dc10827b93164" and "76f186f68e04efd182b78f1601486982cf5328b9" have entirely different histories.
f620993606
...
76f186f68e
12 changed files with 24 additions and 1479 deletions
|
@ -1,8 +1,6 @@
|
|||
token=YourToken
|
||||
clientId=BotClientId
|
||||
guildId=DevGuildId
|
||||
ownerId=OwnerUserId
|
||||
statusChannel=
|
||||
uptimeURL=UptimeKumaOrWhateverStatusThingYouUseOrJustLeaveEmpty
|
||||
uptimeInterval=60
|
||||
twiConsumer=TwitterConsumerToken
|
||||
|
|
|
@ -4,16 +4,9 @@
|
|||
"node": true,
|
||||
"es6": true
|
||||
},
|
||||
"parser": "@babel/eslint-parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2022,
|
||||
"sourceType": "module",
|
||||
"requireConfigFile": false,
|
||||
"babelOptions": {
|
||||
"plugins": [
|
||||
"@babel/plugin-syntax-import-assertions"
|
||||
]
|
||||
}
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"arrow-spacing": ["warn", { "before": true, "after": true }],
|
||||
|
|
|
@ -6,7 +6,7 @@ import os from 'node:os';
|
|||
import fs from 'node:fs';
|
||||
|
||||
import db from '../../models/index.js';
|
||||
import wordToCensor from '../../json/censor.json' assert {type: 'json'};
|
||||
import wordToCensor from '../../json/censor.json' assert {type: 'json'};;
|
||||
import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
const { twiConsumer, twiConsumerSecret, twiToken, twiTokenSecret, twiChannel, twiLogChannel } = process.env;
|
||||
|
@ -28,20 +28,21 @@ export default {
|
|||
ratelimit: 3,
|
||||
cooldown: 3600,
|
||||
async execute(interaction) {
|
||||
await interaction.deferReply({ ephemeral: false });
|
||||
await interaction.deferReply({ ephemeral: false });
|
||||
const client = interaction.client;
|
||||
let tweet = interaction.options.getString('content');
|
||||
const attachment = interaction.options.getAttachment('image');
|
||||
const date = new Date();
|
||||
// If account is less than 6 months old don't accept the tweet ( alt prevention )
|
||||
if (interaction.user.createdAt > date.setMonth(date.getMonth() - 6)) {
|
||||
await interaction.editReply({ content: 'Your account is too new to be able to use this command!' });
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
// If account is less than 1 year old don't accept attachment
|
||||
if (attachment && interaction.user.createdAt > date.setFullYear(date.getFullYear() - 1)) {
|
||||
await interaction.editReply({ content: 'Your account need to be 1 year or older to be able to send attachment!' });
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
// remove zero width space
|
||||
|
@ -56,20 +57,20 @@ export default {
|
|||
Blacklists.create(body);
|
||||
|
||||
await interaction.editReply({ content: 'Sike, you just posted cringe! Enjoy the blacklist :)' });
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
// Very simple link detection
|
||||
if (new RegExp('([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?').test(tweet) && !tweet.includes('twitter.com')) {
|
||||
await interaction.editReply({ content: 'You may not tweet links outside of twitter.com' });
|
||||
return;
|
||||
}
|
||||
await interaction.editReply({ content: 'You may not tweet links outside of twitter.com' });
|
||||
return;
|
||||
}
|
||||
// Do not allow discord invites
|
||||
if (tweet.includes('discord.gg') || tweet.includes('discord.com/invite/')) {
|
||||
await interaction.editReply({ content: 'No discord invite allowed.' });
|
||||
return;
|
||||
}
|
||||
}
|
||||
await interaction.editReply({ content: 'No discord invite allowed.' });
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const T = new Twit({
|
||||
consumer_key: twiConsumer,
|
||||
|
@ -113,7 +114,7 @@ export default {
|
|||
}
|
||||
else {
|
||||
await interaction.editReply({ content: 'File type not supported, you can only send jpg/png/gif' });
|
||||
return;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -123,7 +124,7 @@ export default {
|
|||
catch (err) {
|
||||
console.error(err);
|
||||
await interaction.editReply({ content: 'Oh no, an error has occurred :(' });
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
function Tweet(data) {
|
||||
|
@ -166,10 +167,10 @@ export default {
|
|||
let channel = interaction.client.channels.resolve(twiChannel);
|
||||
channel.send(TweetLink);
|
||||
|
||||
const Embed = new MessageEmbed()
|
||||
.setAuthor({ name: interaction.user.username, iconURL: interaction.user.displayAvatarURL() })
|
||||
.setDescription(tweet)
|
||||
.addField('Link', TweetLink, true)
|
||||
const Embed = new MessageEmbed()
|
||||
.setAuthor({ name: interaction.user.username, iconURL: interaction.user.displayAvatarURL() })
|
||||
.setDescription(tweet)
|
||||
.addField('Link', TweetLink, true)
|
||||
.addField('Tweet ID', tweetid, true)
|
||||
.addField('Channel ID', interaction.channel.id, true)
|
||||
.addField('Messsage ID', interaction.id, true)
|
||||
|
@ -186,8 +187,8 @@ export default {
|
|||
|
||||
if (attachment) Embed.setImage(attachment.url);
|
||||
|
||||
channel = interaction.client.channels.resolve(twiLogChannel);
|
||||
channel.send({ embeds: [Embed] });
|
||||
channel = interaction.client.channels.resolve(twiLogChannel);
|
||||
channel.send({ embeds: [Embed] });
|
||||
return interaction.editReply({ content: `Go see ur epic tweet ${TweetLink}` });
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
import db from '../../models/index.js';
|
||||
const guildBlacklist = db.guildBlacklist;
|
||||
import { MessageEmbed } from 'discord.js';
|
||||
|
||||
import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
const { statusChannel } = process.env;
|
||||
|
||||
export default {
|
||||
name: 'guildCreate',
|
||||
once: true,
|
||||
async execute(guild, client) {
|
||||
const guildOwner = await client.users.fetch(guild.ownerId);
|
||||
|
||||
console.log(`${guild.name}\n${guild.memberCount} users\nOwner: ${guildOwner.username}\nOwner ID: ${guild.ownerId}`);
|
||||
|
||||
const blacklist = await guildBlacklist.findOne({ where: { guildID:guild.id } });
|
||||
|
||||
if (blacklist) {
|
||||
guild.leave();
|
||||
}
|
||||
|
||||
// If stats channel settings exist, send bot stats to it
|
||||
if (statusChannel) {
|
||||
const channel = client.channels.resolve(statusChannel);
|
||||
const botCount = guild.members.cache.filter(member => member.user.bot).size;
|
||||
console.log(guild.memberCount);
|
||||
const addEmbed = new MessageEmbed()
|
||||
.setColor('#52e80d')
|
||||
.setTitle('New boiz in town')
|
||||
.setURL('https://www.youtube.com/watch?v=6n3pFFPSlW4')
|
||||
.setThumbnail(guild.iconURL())
|
||||
.addField('Guild', `${guild.name} (${guild.id})`)
|
||||
.addField('Total number of members', guild.memberCount.toString(), true)
|
||||
.addField('Number of users', (guild.memberCount - botCount).toString(), true)
|
||||
.addField('Number of bots', botCount.toString(), true)
|
||||
.addField('Owner', `${guildOwner.username} (${guild.ownerId})`, true)
|
||||
.setFooter({ text: `I'm now in ${client.guilds.cache.size} servers!` })
|
||||
.setTimestamp();
|
||||
|
||||
if (blacklist) {
|
||||
return channel.send(`${guildOwner.username} (${guild.ownerId}) tried to add me to their guild while being blacklisted!\n${guild.name} (${guild.id})`);
|
||||
}
|
||||
|
||||
channel.send({ embeds: [addEmbed] });
|
||||
}
|
||||
},
|
||||
};
|
|
@ -1,44 +0,0 @@
|
|||
import db from '../../models/index.js';
|
||||
const guildBlacklist = db.guildBlacklist;
|
||||
import { MessageEmbed } from 'discord.js';
|
||||
|
||||
import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
const { statusChannel } = process.env;
|
||||
|
||||
export default {
|
||||
name: 'guildDelete',
|
||||
once: true,
|
||||
async execute(guild, client) {
|
||||
const guildOwner = await client.users.fetch(guild.ownerId);
|
||||
|
||||
console.log(`***BOT KICKED***\n${guild.name}\n${guild.memberCount} users\nOwner: ${guildOwner.username}\nOwner ID: ${guild.ownerId}\n***BOT KICKED***`);
|
||||
|
||||
const blacklist = await guildBlacklist.findOne({ where: { guildID:guild.id } });
|
||||
|
||||
// If stats channel settings exist, send bot stats to it
|
||||
if (statusChannel) {
|
||||
const channel = client.channels.resolve(statusChannel);
|
||||
const botCount = guild.members.cache.filter(member => member.user.bot).size;
|
||||
console.log(guild.memberCount);
|
||||
const kickEmbed = new MessageEmbed()
|
||||
.setColor('#FF0000')
|
||||
.setTitle('Some mofo just removed me from there guild :(')
|
||||
.setURL('https://www.youtube.com/watch?v=6n3pFFPSlW4')
|
||||
.setThumbnail(guild.iconURL())
|
||||
.addField('Guild', `${guild.name} (${guild.id})`)
|
||||
.addField('Total number of members', guild.memberCount.toString(), true)
|
||||
.addField('Number of users', (guild.memberCount - botCount).toString(), true)
|
||||
.addField('Number of bots', botCount.toString(), true)
|
||||
.addField('Owner', `${guildOwner.username} (${guild.ownerId})`, true)
|
||||
.setFooter({ text: `I'm now in ${client.guilds.cache.size} servers!` })
|
||||
.setTimestamp();
|
||||
|
||||
if (blacklist) {
|
||||
kickEmbed.setFooter({ text: kickEmbed.footer.text + ' | Left this guild because owner is blacklisted!' });
|
||||
}
|
||||
|
||||
channel.send({ embeds: [kickEmbed] });
|
||||
}
|
||||
},
|
||||
};
|
|
@ -1,7 +1,6 @@
|
|||
import { exec } from 'node:child_process';
|
||||
import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
const { statusChannel } = process.env;
|
||||
|
||||
export default {
|
||||
name: 'ready',
|
||||
|
@ -32,11 +31,5 @@ export default {
|
|||
console.log(`There is \x1b[33m${commandSize}\x1b[0m command loaded.`);
|
||||
console.log(`Running yt-dlp \x1b[33m${ytdlpVersion.replace('\n', '')}\x1b[0m`);
|
||||
console.log('===========[ READY ]===========');
|
||||
|
||||
// If stats channel settings exist, send bot stats to it
|
||||
if (statusChannel) {
|
||||
const channel = client.channels.resolve(statusChannel);
|
||||
channel.send(`Ready to serve in ${channelSize} channels on ${guildSize} servers.\nThere is ${commandSize} command loaded.\nRunning yt-dlp ${ytdlpVersion.replace('\n', '')}\n${client.readyAt}`);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -1,35 +0,0 @@
|
|||
import game from '../../json/playing.json' assert {type: 'json'};
|
||||
import watch from '../../json/watching.json' assert {type: 'json'};
|
||||
|
||||
export default {
|
||||
name: 'ready',
|
||||
once: true,
|
||||
async execute(client) {
|
||||
// Bot status
|
||||
setStatus();
|
||||
// Change status every 30 minutes
|
||||
setInterval(async () => {
|
||||
setStatus();
|
||||
}, 1800000);
|
||||
|
||||
async function setStatus() {
|
||||
const random = Math.floor((Math.random() * 2));
|
||||
// Random "Watching" status taken from json
|
||||
if (random === 0) {
|
||||
console.log('Status type: \x1b[32mWatching\x1b[0m');
|
||||
|
||||
const status = watch[Math.floor((Math.random() * watch.length))];
|
||||
console.log(`Setting status to: ${status}`);
|
||||
client.user.setActivity(status, { type: 'WATCHING' });
|
||||
}
|
||||
// Random "Playing" status taken from json
|
||||
else if (random === 1) {
|
||||
console.log('Status type: \x1b[32mPlaying\x1b[0m');
|
||||
|
||||
const status = game[Math.floor((Math.random() * game.length))];
|
||||
console.log(`Setting status to: ${status}`);
|
||||
client.user.setActivity(status, { type: 'PLAYING' });
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
5
index.js
5
index.js
|
@ -15,7 +15,6 @@ const client = new Client({ intents: [Intents.FLAGS.GUILDS], shards: 'auto' });
|
|||
client.commands = new Collection();
|
||||
await loadCommandFromDir('fun');
|
||||
await loadCommandFromDir('utility');
|
||||
await loadCommandFromDir('admin');
|
||||
await loadCommandFromDir('owner');
|
||||
|
||||
// Load events
|
||||
|
@ -46,10 +45,10 @@ async function loadEventFromDir(dir, listener) {
|
|||
let event = await import(filePath);
|
||||
event = event.default;
|
||||
if (event.once) {
|
||||
listener.once(event.name, (...args) => event.execute(...args, client));
|
||||
listener.once(event.name, (...args) => event.execute(...args));
|
||||
}
|
||||
else {
|
||||
listener.on(event.name, (...args) => event.execute(...args, client));
|
||||
listener.on(event.name, (...args) => event.execute(...args));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
[
|
||||
"/feedback <feedback> to tell me what you think of the bot!", "Did you know? This bot used to run on a Raspberry Pi & a hacked Playstation 4!", "with you", "waluigi taco stand", "Minecraft", "super smash bros", "mario kart wii", "Cult of the lamb", "SOMEONE SEND HELP PLEASE, IM STUCK IN THIS BOT", "alone", "You can support me with the donate command!"
|
||||
]
|
|
@ -1,3 +0,0 @@
|
|||
[
|
||||
"you", "everything you type", "Le funny meme", "my wee wee grow", "the world burn"
|
||||
]
|
1304
package-lock.json
generated
1304
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -29,8 +29,6 @@
|
|||
"twit": "^2.2.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/eslint-parser": "^7.18.9",
|
||||
"@babel/plugin-syntax-import-assertions": "^7.18.6",
|
||||
"@types/node": "^18.7.3",
|
||||
"eslint": "^8.16.0",
|
||||
"sequelize-cli": "^6.4.1"
|
||||
|
|
Loading…
Reference in a new issue