Code Refactoring
* Adds Config for commands * Moved Casual Messages to language.json
This commit is contained in:
28
src/commands/jokes.js
Normal file
28
src/commands/jokes.js
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
const fetch = require('node-fetch');
|
||||||
|
|
||||||
|
function randomJokes(message) {
|
||||||
|
message.channel.startTyping();
|
||||||
|
getJokes().then(response => {
|
||||||
|
message.channel.stopTyping();
|
||||||
|
if (response) {
|
||||||
|
message.channel.startTyping();
|
||||||
|
message.reply(response.setup);
|
||||||
|
setTimeout(() => {
|
||||||
|
message.channel.stopTyping();
|
||||||
|
message.reply(`||${response.punchline}||`);
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getJokes() {
|
||||||
|
return fetch(`https://official-joke-api.appspot.com/jokes/random`)
|
||||||
|
.then(res => res.json())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
execute(client,message, args) {
|
||||||
|
randomJokes(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
75
src/commands/loadout.js
Normal file
75
src/commands/loadout.js
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
const Airtable = require('airtable');
|
||||||
|
const {MessageEmbed} = require('discord.js');
|
||||||
|
Airtable.configure({
|
||||||
|
endpointUrl: 'https://api.airtable.com',
|
||||||
|
apiKey: process.env.AIRTABLE_KEY
|
||||||
|
});
|
||||||
|
const base = Airtable.base('appppieGLc8loZp5H');
|
||||||
|
const AirTableFields = {
|
||||||
|
WEAPON_TYPE: 'cod_weapon_type',
|
||||||
|
WEAPON_NAME: 'cod_weapon_name',
|
||||||
|
MATCH_TYPE: 'cod_match_type',
|
||||||
|
ATTACHMENTS: 'cod_weapon_attachments'
|
||||||
|
};
|
||||||
|
|
||||||
|
async function getCodMLoadOut(message, args) {
|
||||||
|
const codUserName = args[0];
|
||||||
|
if (!codUserName) return;
|
||||||
|
base('cod_loadout').select({
|
||||||
|
maxRecords: 2,
|
||||||
|
view: "Grid view",
|
||||||
|
filterByFormula: `({cod_username} = '${args[0]}')`
|
||||||
|
}).eachPage((records, fetchNextPage) => {
|
||||||
|
if (records && records.length > 0) {
|
||||||
|
records.forEach(async (record) => {
|
||||||
|
const weaponType = await getWeaponType(record.get(AirTableFields.WEAPON_TYPE));
|
||||||
|
const weaponName = await getWeaponName(record.get(AirTableFields.WEAPON_NAME));
|
||||||
|
const loadOutMessage = new MessageEmbed()
|
||||||
|
.setTitle(`Loadout of ${codUserName} : ${record.get(AirTableFields.MATCH_TYPE)}`)
|
||||||
|
.addField('Weapon Name', weaponName, true)
|
||||||
|
.addField('Weapon Type', weaponType, true)
|
||||||
|
.addField('Attachments', record.get(AirTableFields.ATTACHMENTS), true)
|
||||||
|
.setColor("RANDOM");
|
||||||
|
message.channel.send(loadOutMessage);
|
||||||
|
});
|
||||||
|
fetchNextPage();
|
||||||
|
} else {
|
||||||
|
message.channel.send(`No Loadout found for ***${codUserName}***`);
|
||||||
|
}
|
||||||
|
|
||||||
|
}, function done(err) {
|
||||||
|
if (err) { console.error(err); return; }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getWeaponType(weaponType) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
base('Weapon Types').find(weaponType, (error, record) => {
|
||||||
|
if (error) {
|
||||||
|
console.log(error);
|
||||||
|
reject();
|
||||||
|
} else {
|
||||||
|
resolve(record.get(AirTableFields.WEAPON_TYPE));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getWeaponName(weaponName) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
base('Weapons').find(weaponName, (error, record) => {
|
||||||
|
if (error) {
|
||||||
|
console.log(error);
|
||||||
|
reject();
|
||||||
|
} else {
|
||||||
|
resolve(record.get(AirTableFields.WEAPON_NAME));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
execute(client,message, args) {
|
||||||
|
getCodMLoadOut(message,args);
|
||||||
|
}
|
||||||
|
}
|
||||||
44
src/commands/play.js
Normal file
44
src/commands/play.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
const ytdl = require('ytdl-core');
|
||||||
|
const ytSearch = require('yt-search');
|
||||||
|
async function playMusik(client, message, args) {
|
||||||
|
const voiceChannel = message.member.voice.channel;
|
||||||
|
if (!voiceChannel) {
|
||||||
|
return message.channel.send("Join a voice channel to Play Music");
|
||||||
|
}
|
||||||
|
const permission = voiceChannel.permissionsFor(message.client.user);
|
||||||
|
if (!permission.has('CONNECT') || !permission.has('SPEAK')) {
|
||||||
|
return message.channel.send("You don't have the permission to play music. 😥");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!args.length) {
|
||||||
|
return message.channel.send("Please pass something to play as second argument");
|
||||||
|
}
|
||||||
|
|
||||||
|
const connection = await voiceChannel.join();
|
||||||
|
const video = await searchVideo(args.join(' '));
|
||||||
|
|
||||||
|
if (video) {
|
||||||
|
const youtubeStream = ytdl(video.url, { filter: 'audioonly' });
|
||||||
|
client.user.setPresence({ activity: { name: `${video.title}`, type: 'LISTENING' } });
|
||||||
|
connection.play(youtubeStream, { seek: 0, volume: 1 })
|
||||||
|
.on('finish', () => {
|
||||||
|
voiceChannel.leave();
|
||||||
|
client.user.setPresence({ activity: { name: ` ` } });
|
||||||
|
});
|
||||||
|
await message.reply(`Now Playing ${video.title}...`);
|
||||||
|
} else {
|
||||||
|
message.channel.send("No music found to play for you mate. Try again! 👍");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function searchVideo(query) {
|
||||||
|
const searchResult = await ytSearch(query);
|
||||||
|
return (searchResult.videos.length > 1) ? searchResult.videos[0] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
execute(client,message, args) {
|
||||||
|
playMusik(client,message,args);
|
||||||
|
}
|
||||||
|
}
|
||||||
17
src/commands/stop.js
Normal file
17
src/commands/stop.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
async function stopMusik(client,message) {
|
||||||
|
const voiceChannel = message.member.voice.channel;
|
||||||
|
|
||||||
|
if (!voiceChannel) {
|
||||||
|
return message.channel.send("Join a voice channel to Execute this command");
|
||||||
|
}
|
||||||
|
|
||||||
|
await voiceChannel.leave();
|
||||||
|
await message.channel.send("Stoping Music... Baye Baye.... 😅");
|
||||||
|
client.user.setPresence({ activity: { name: `COMMANDS`, type: 'LISTENING' } });
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
execute(client,message, args) {
|
||||||
|
stopMusik(client, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
22
src/commons/confusion.js
Normal file
22
src/commons/confusion.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
const {MessageEmbed} = require('discord.js');
|
||||||
|
const fetch = require('node-fetch');
|
||||||
|
function generateConfusionGif(message) {
|
||||||
|
message.channel.startTyping();
|
||||||
|
const embed = new MessageEmbed()
|
||||||
|
.setDescription(`I dont understand what you are saying <@${process.env.KLIAS_TAG}> do you know what this guy is asking?`)
|
||||||
|
.setColor("RANDOM");
|
||||||
|
const randomIndex = Math.floor(Math.random() * 49);
|
||||||
|
fetch(`https://api.tenor.com/v1/random?key=${process.env.TENOR_TOKEN}&q=I%20dont%20understand&limit=50`)
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(response => {
|
||||||
|
embed.setImage(response.results[randomIndex].media[0].gif.url);
|
||||||
|
message.channel.stopTyping();
|
||||||
|
message.channel.send(embed);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
execute(message) {
|
||||||
|
generateConfusionGif(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
name: "jokes",
|
|
||||||
description: "Only bad jokes here",
|
|
||||||
execute() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
24
src/configs/commands.config.json
Normal file
24
src/configs/commands.config.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"commands" :[
|
||||||
|
{
|
||||||
|
"name": "jokes",
|
||||||
|
"description": "Bad Jokes Command",
|
||||||
|
"file": "./commands/jokes.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "play",
|
||||||
|
"description": "Play Music",
|
||||||
|
"file": "./commands/play.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stop",
|
||||||
|
"description": "Stop Music",
|
||||||
|
"file": "./commands/stop.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "loadout",
|
||||||
|
"description": "Get CoD Mobile User Loadout",
|
||||||
|
"file": "./commands/loadout.js"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
15
src/language/language.json
Normal file
15
src/language/language.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"hi": "Hey 🙋♂️. How Are You?",
|
||||||
|
"hello": "Hey 🙋♂️. How Are You?",
|
||||||
|
"ഹലോ": "ഹല്ലാ.... ഇതാരാ.. സുഖം തന്നെ?",
|
||||||
|
"ഹി": "ഹല്ലാ.... ഇതാരാ.. സുഖം തന്നെ?",
|
||||||
|
"എന്തൊക്കെ ഉണ്ട് വിശേഷം": "അങ്ങിനെ പോണു...🤷♂️ സുഖങ്ങളൊക്കെ തന്നെ?",
|
||||||
|
"enthokke und vishesham": "അങ്ങിനെ പോണു...🤷♂️ സുഖങ്ങളൊക്കെ തന്നെ?",
|
||||||
|
"മനുസ്സനല്ലേ പുള്ളെ": "ഇറച്ചിയും ബറോട്ടയും വേണായിരിക്കും... 🤣🤣🤣",
|
||||||
|
"manusanalle pulle": "ഇറച്ചിയും ബറോട്ടയും വേണായിരിക്കും... 🤣🤣🤣",
|
||||||
|
"നീ ആരാ": "താൻ ആരാണെന്ന് തനിക്ക് അറിയാന്മേലെങ്കിൽ താൻ എന്നോട് ചോയ്ക്ക് താൻ ആരാണെന്ന്??? തനിക്ക് ഞാൻ പറഞ്ഞു തരാം താൻ ആരാണെന്ന്... 🤪🤪",
|
||||||
|
"nee araa": "താൻ ആരാണെന്ന് തനിക്ക് അറിയാന്മേലെങ്കിൽ താൻ എന്നോട് ചോയ്ക്ക് താൻ ആരാണെന്ന്??? തനിക്ക് ഞാൻ പറഞ്ഞു തരാം താൻ ആരാണെന്ന്... 🤪🤪",
|
||||||
|
"kya banana hei": "Thumarah banana kaha hei...🤣🤣",
|
||||||
|
"ക്യാ ബനാന ഹേയ്": "തുമരഹ് ബനാന കഹാ ഹേയ്...🤣🤣",
|
||||||
|
"good night": "Good Night 🌉. See you tomorrow. 👋👋"
|
||||||
|
}
|
||||||
250
src/main.js
250
src/main.js
@@ -1,85 +1,60 @@
|
|||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
|
const fs = require('fs');
|
||||||
const { Client, MessageEmbed, Collection } = require('discord.js');
|
const { Client, MessageEmbed, Collection } = require('discord.js');
|
||||||
const fetch = require('node-fetch');
|
const fetch = require('node-fetch');
|
||||||
const ytdl = require('ytdl-core');
|
const confusion = require('./commons/confusion');
|
||||||
const ytSearch = require('yt-search');
|
|
||||||
const Airtable = require('airtable');
|
|
||||||
Airtable.configure({
|
|
||||||
endpointUrl: 'https://api.airtable.com',
|
|
||||||
apiKey: process.env.AIRTABLE_KEY
|
|
||||||
});
|
|
||||||
const base = Airtable.base('appppieGLc8loZp5H');
|
|
||||||
|
|
||||||
const client = new Client();
|
const client = new Client();
|
||||||
|
client.commands = new Collection();
|
||||||
|
let casualMessages = {};
|
||||||
const CMD_PREFIX = "!";
|
const CMD_PREFIX = "!";
|
||||||
const dayToMilliS = 60 * 60 * 24 * 1000;
|
const dayToMilliS = 60 * 60 * 24 * 1000;
|
||||||
const AirTableFields = {
|
|
||||||
WEAPON_TYPE: 'cod_weapon_type',
|
|
||||||
WEAPON_NAME: 'cod_weapon_name',
|
|
||||||
MATCH_TYPE: 'cod_match_type',
|
|
||||||
ATTACHMENTS: 'cod_weapon_attachments'
|
|
||||||
};
|
|
||||||
|
|
||||||
client.on('message', (message) => {
|
client.on('message', (message) => {
|
||||||
if (message.author.bot) return;
|
if (message.author.bot) return;
|
||||||
if (message.content.startsWith(CMD_PREFIX)) {
|
if (message.content.startsWith(CMD_PREFIX)) {
|
||||||
const commandReply = parseCMD(message);
|
const commandReply = parseCMD(message);
|
||||||
if (commandReply && (typeof commandReply != "object")) {
|
if (!commandReply) {
|
||||||
message.reply(commandReply);
|
confusion.execute(message);
|
||||||
} else if (!commandReply) {
|
|
||||||
generateConfusionGif(message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
const replyMessage = parseCasualMessage(message);
|
const replyMessage = parseCasualMessage(message);
|
||||||
if (replyMessage) {
|
if (replyMessage) {
|
||||||
message.reply(replyMessage);
|
message.reply(replyMessage);
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
client.on('ready', () => {
|
client.on('ready', () => {
|
||||||
console.log("BOT is now LIVE");
|
console.log("BOT is now LIVE");
|
||||||
|
initConfig();
|
||||||
|
initLanguages();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
function initConfig() {
|
||||||
|
fs.readFile('src/configs/commands.config.json', 'utf8', (error, data) => {
|
||||||
|
if (error) throw error;
|
||||||
|
const { commands } = JSON.parse(data);
|
||||||
|
if (commands) {
|
||||||
|
commands.forEach(command => {
|
||||||
|
const commandFile = require(command.file);
|
||||||
|
client.commands.set(command.name, commandFile);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function initLanguages() {
|
||||||
|
fs.readFile('src/language/language.json', 'utf8', (error, data) => {
|
||||||
|
if (error) throw error;
|
||||||
|
casualMessages = JSON.parse(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function parseCasualMessage(message) {
|
function parseCasualMessage(message) {
|
||||||
const { content } = message;
|
const { content } = message;
|
||||||
switch (content.trim().toLowerCase()) {
|
const parsedMessage = content.trim().toLowerCase();
|
||||||
case 'hello':
|
if (!casualMessages.hasOwnProperty(parsedMessage)) return null;
|
||||||
case 'hi':
|
return casualMessages[parsedMessage];
|
||||||
return `Hey ${message.author} 🙋♂️. How Are You?`;
|
|
||||||
case 'ഹലോ':
|
|
||||||
case 'ഹി':
|
|
||||||
return `ഹല്ലാ.... ഇതാരാ ${message.author}യോ... സുഖം തന്നെ?`;
|
|
||||||
case 'എന്തൊക്കെ ഉണ്ട് വിശേഷം':
|
|
||||||
case 'enthokke und vishesham':
|
|
||||||
case 'enthokkeyund vishesham': return `അങ്ങിനെ പോണു...🤷♂️ സുഖങ്ങളൊക്കെ തന്നെ?`;
|
|
||||||
case 'മനുസ്സനല്ലേ പുള്ളെ':
|
|
||||||
case 'manusanalle pulle': return `ഇറച്ചിയും ബറോട്ടയും വേണായിരിക്കും... 🤣🤣🤣`;
|
|
||||||
case 'നീ ആരാ':
|
|
||||||
case 'nee araa': return `താൻ ആരാണെന്ന് തനിക്ക് അറിയാന്മേലെങ്കിൽ താൻ എന്നോട് ചോയ്ക്ക് താൻ ആരാണെന്ന്??? തനിക്ക് ഞാൻ പറഞ്ഞു തരാം താൻ ആരാണെന്ന്... 🤪🤪`;
|
|
||||||
case 'kya banana hei': return `Thumarah banana kaha hei...🤣🤣`;
|
|
||||||
case 'ക്യാ ബനാന ഹേയ്': return 'തുമരഹ് ബനാന കഹാ ഹേയ്...🤣🤣';
|
|
||||||
case 'good night': return null;
|
|
||||||
default: return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function generateConfusionGif(message) {
|
|
||||||
message.channel.startTyping();
|
|
||||||
const embed = new MessageEmbed()
|
|
||||||
.setDescription(`I dont understand what you are saying <@${process.env.KLIAS_TAG}> do you know what this guy is asking?`)
|
|
||||||
.setColor("RANDOM");
|
|
||||||
const randomIndex = Math.floor(Math.random() * 49);
|
|
||||||
fetch(`https://api.tenor.com/v1/random?key=${process.env.TENOR_TOKEN}&q=I%20dont%20understand&limit=50`)
|
|
||||||
.then(res => res.json())
|
|
||||||
.then(response => {
|
|
||||||
embed.setImage(response.results[randomIndex].media[0].gif.url);
|
|
||||||
message.channel.stopTyping();
|
|
||||||
message.channel.send(embed);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseCMD(message) {
|
function parseCMD(message) {
|
||||||
@@ -87,172 +62,15 @@ function parseCMD(message) {
|
|||||||
.trim()
|
.trim()
|
||||||
.substring(CMD_PREFIX.length)
|
.substring(CMD_PREFIX.length)
|
||||||
.split(/\s+/);
|
.split(/\s+/);
|
||||||
switch (CMD_NAME) {
|
|
||||||
case 'jokes': randomJokes(message); return {};
|
|
||||||
case 'play': playMusik(message, args); return {};
|
|
||||||
case 'stop': stopMusik(message); return {};
|
|
||||||
case 'loadout': getCodMLoadOut(message, args); return {};
|
|
||||||
default: return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function randomJokes(message) {
|
if (!client.commands.has(CMD_NAME)) return false;
|
||||||
message.channel.startTyping();
|
|
||||||
getJokes().then(response => {
|
|
||||||
message.channel.stopTyping();
|
|
||||||
if (response) {
|
|
||||||
message.channel.startTyping();
|
|
||||||
message.reply(response.setup);
|
|
||||||
setTimeout(() => {
|
|
||||||
message.channel.stopTyping();
|
|
||||||
message.reply(`||${response.punchline}||`);
|
|
||||||
}, 5000);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getJokes() {
|
client.commands.get(CMD_NAME).execute(client, message, args);
|
||||||
return fetch(`https://official-joke-api.appspot.com/jokes/random`)
|
|
||||||
.then(res => res.json())
|
|
||||||
}
|
|
||||||
|
|
||||||
function intervalJokes() {
|
return true;
|
||||||
getJokesChannel().then(channel => {
|
|
||||||
if (channel) {
|
|
||||||
// channel.bulkDelete(100);
|
|
||||||
setInterval(jokeOfTheDay.bind(this, channel), dayToMilliS);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function jokeOfTheDay(channel) {
|
|
||||||
getJokes().then(response => {
|
|
||||||
if (response) {
|
|
||||||
const joke = new MessageEmbed()
|
|
||||||
.setTitle(`**${response.setup}**`)
|
|
||||||
.setDescription(`||${response.punchline}||`)
|
|
||||||
.setFooter('https://github.com/15Dkatz/official_joke_api')
|
|
||||||
.setColor("RANDOM");
|
|
||||||
channel.send(joke);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async function getJokesChannel() {
|
|
||||||
const channel = await client.channels.fetch(process.env.JOKES_CHANNEL);
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function playMusik(message, args) {
|
|
||||||
const voiceChannel = message.member.voice.channel;
|
|
||||||
if (!voiceChannel) {
|
|
||||||
return message.channel.send("Join a voice channel to Play Music");
|
|
||||||
}
|
|
||||||
const permission = voiceChannel.permissionsFor(message.client.user);
|
|
||||||
if (!permission.has('CONNECT') || !permission.has('SPEAK')) {
|
|
||||||
return message.channel.send("You don't have the permission to play music. 😥");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!args.length) {
|
|
||||||
return message.channel.send("Please pass something to play as second argument");
|
|
||||||
}
|
|
||||||
|
|
||||||
const connection = await voiceChannel.join();
|
|
||||||
const video = await searchVideo(args.join(' '));
|
|
||||||
|
|
||||||
if (video) {
|
|
||||||
const youtubeStream = ytdl(video.url, { filter: 'audioonly' });
|
|
||||||
client.user.setPresence({ activity: { name: `${video.title}`, type: 'LISTENING' } });
|
|
||||||
connection.play(youtubeStream, { seek: 0, volume: 1 })
|
|
||||||
.on('finish', () => {
|
|
||||||
voiceChannel.leave();
|
|
||||||
client.user.setPresence({ activity: { name: ` ` } });
|
|
||||||
});
|
|
||||||
await message.reply(`Now Playing ${video.title}...`);
|
|
||||||
} else {
|
|
||||||
message.channel.send("No music found to play for you mate. Try again! 👍");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function stopMusik(message) {
|
|
||||||
const voiceChannel = message.member.voice.channel;
|
|
||||||
|
|
||||||
if (!voiceChannel) {
|
|
||||||
return message.channel.send("Join a voice channel to Execute this command");
|
|
||||||
}
|
|
||||||
|
|
||||||
await voiceChannel.leave();
|
|
||||||
await message.channel.send("Stoping Music... Baye Baye.... 😅");
|
|
||||||
client.user.setPresence({ activity: { name: `COMMANDS`, type: 'LISTENING' } });
|
|
||||||
}
|
|
||||||
|
|
||||||
async function searchVideo(query) {
|
|
||||||
const searchResult = await ytSearch(query);
|
|
||||||
return (searchResult.videos.length > 1) ? searchResult.videos[0] : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getCodMLoadOut(message, args) {
|
|
||||||
const codUserName = args[0];
|
|
||||||
if (!codUserName) return;
|
|
||||||
base('cod_loadout').select({
|
|
||||||
maxRecords: 2,
|
|
||||||
view: "Grid view",
|
|
||||||
filterByFormula: `({cod_username} = '${args[0]}')`
|
|
||||||
}).eachPage((records, fetchNextPage) => {
|
|
||||||
if (records && records.length > 0) {
|
|
||||||
records.forEach(async (record) => {
|
|
||||||
const weaponType = await getWeaponType(record.get(AirTableFields.WEAPON_TYPE));
|
|
||||||
const weaponName = await getWeaponName(record.get(AirTableFields.WEAPON_NAME));
|
|
||||||
const loadOutMessage = new MessageEmbed()
|
|
||||||
.setTitle(`Loadout of ${codUserName} : ${record.get(AirTableFields.MATCH_TYPE)}`)
|
|
||||||
.addField('Weapon Name', weaponName, true)
|
|
||||||
.addField('Weapon Type', weaponType, true)
|
|
||||||
.addField('Attachments', record.get(AirTableFields.ATTACHMENTS), true)
|
|
||||||
.setColor("RANDOM");
|
|
||||||
message.channel.send(loadOutMessage);
|
|
||||||
});
|
|
||||||
fetchNextPage();
|
|
||||||
} else {
|
|
||||||
message.channel.send(`No Loadout found for ***${codUserName}***`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}, function done(err) {
|
|
||||||
if (err) { console.error(err); return; }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getWeaponType(weaponType) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
base('Weapon Types').find(weaponType, (error, record) => {
|
|
||||||
if (error) {
|
|
||||||
console.log(error);
|
|
||||||
reject();
|
|
||||||
} else {
|
|
||||||
resolve(record.get(AirTableFields.WEAPON_TYPE));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getWeaponName(weaponName) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
base('Weapons').find(weaponName, (error, record) => {
|
|
||||||
if (error) {
|
|
||||||
console.log(error);
|
|
||||||
reject();
|
|
||||||
} else {
|
|
||||||
resolve(record.get(AirTableFields.WEAPON_NAME));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
client.login(process.env.LUL_BOT_TKN)
|
client.login(process.env.LUL_BOT_TKN)
|
||||||
.then(() => {
|
|
||||||
intervalJokes();
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.error("BOT Login Failed ", error);
|
console.error("BOT Login Failed ", error);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user