Skip to content

Instantly share code, notes, and snippets.

@dooderstem
Last active September 20, 2023 16:32
Show Gist options
  • Select an option

  • Save dooderstem/c10835cca9a21d0f7652635d05bb7202 to your computer and use it in GitHub Desktop.

Select an option

Save dooderstem/c10835cca9a21d0f7652635d05bb7202 to your computer and use it in GitHub Desktop.

Revisions

  1. dooderstem revised this gist Sep 20, 2023. 1 changed file with 164 additions and 164 deletions.
    328 changes: 164 additions & 164 deletions Justabot.js
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@ const {
    GatewayIntentBits,
    Partials,
    ActivityType,
    } = require("discord.js");
    } = require('discord.js');
    const client = new Client({
    partials: [Partials.Message, Partials.Channel, Partials.Reaction],
    intents: [
    @@ -18,31 +18,31 @@ const client = new Client({
    GatewayIntentBits.GuildPresences,
    ],
    });
    const ud = require("urban-dictionary");
    const mysql = require("mysql");
    const request = require("request");
    const fs = require("fs");
    const http = require("http");
    const https = require("https");
    const math = require("mathjs");
    const ud = require('urban-dictionary');
    const mysql = require('mysql');
    const request = require('request');
    const fs = require('fs');
    const http = require('http');
    const https = require('https');
    const math = require('mathjs');
    const unixTime = Math.floor(Date.now() / 1000);
    // Create a connection to the mysql database
    function mysqlConnect() {
    var mysqlParams = mysql.createConnection({
    host: "127.0.0.1",
    user: "ur user here",
    password: "ur password here",
    database: "ur db here",
    host: '127.0.0.1',
    user: 'ur user here',
    password: 'ur password here',
    database: 'ur db here',
    });
    return mysqlParams;
    }
    const objMysq = mysqlConnect();
    // Functions needed for commands.
    // Removes first word.
    function rmF(str) {
    const indexOfSpace = str.indexOf(" ");
    const indexOfSpace = str.indexOf(' ');
    if (indexOfSpace === -1) {
    return "";
    return '';
    }
    return str.substring(indexOfSpace + 1);
    }
    @@ -53,38 +53,38 @@ function sleep(time, callback) {
    callback();
    }

    const { SlashCommandBuilder, Routes } = require("discord.js");
    const { REST } = require("@discordjs/rest");
    const { SlashCommandBuilder, Routes } = require('discord.js');
    const { REST } = require('@discordjs/rest');

    const commands = [
    new SlashCommandBuilder()
    .setName("i")
    .setDescription("Searches Google Images")
    .setName('i')
    .setDescription('Searches Google Images')
    .addStringOption((option) =>
    option
    .setName("search")
    .setDescription("enter search term")
    .setName('search')
    .setDescription('enter search term')
    .setRequired(true)
    ),
    new SlashCommandBuilder()
    .setName("r")
    .setDescription("Performs your last /i search again"),
    .setName('r')
    .setDescription('Performs your last /i search again'),
    ].map((command) => command.toJSON());

    const rest = new REST({ version: "10" }).setToken("ur token here");
    const rest = new REST({ version: '10' }).setToken('ur token here');

    rest
    .put(
    Routes.applicationGuildCommands(
    "ur server shit here ig",
    "ur server shit here ig"
    'ur server shit here ig',
    'ur server shit here ig'
    ),
    { body: commands }
    )
    .then(() => console.log("Successfully registered application commands."))
    .then(() => console.log('Successfully registered application commands.'))
    .catch(console.error);

    client.on("interactionCreate", async (interaction) => {
    client.on('interactionCreate', async (interaction) => {
    if (!interaction.isChatInputCommand()) return;

    const { commandName } = interaction;
    @@ -94,15 +94,15 @@ client.on("interactionCreate", async (interaction) => {
    const member = await interaction.guild.members.fetch(senderID); //remember you still need async
    var membersStatus = member.presence?.status;
    if (membersStatus === null || membersStatus === undefined) {
    var membersStatus = "offline";
    var membersStatus = 'offline';
    }
    // Determine if this chat is allowed to use the bot.
    var sql = "SELECT * FROM discord WHERE discord_id = ?";
    var sql = 'SELECT * FROM discord WHERE discord_id = ?';
    objMysq.query(sql, [senderID], function (err, rows, fields) {
    if (err) throw err;
    var preventError = rows.length;
    var errorCheck = preventError.toString();
    if (errorCheck > "0") {
    if (errorCheck > '0') {
    // Grab information about sender from the database.
    const myTeleID = rows[0].discord_id;
    const myBanned = rows[0].banned;
    @@ -111,11 +111,11 @@ client.on("interactionCreate", async (interaction) => {
    const myLastI = rows[0].last_search;
    // Check whether or not the sender is banned from using JustaBot.

    if (commandName === "i") {
    if (myBanned === "yes") {
    if (commandName === 'i') {
    if (myBanned === 'yes') {
    //interaction.reply("im confused. it seems ur offline <:pepesmile:961516075135160330>");
    } else {
    var searchQuery = interaction.options.getString("search");
    var searchQuery = interaction.options.getString('search');
    //await interaction.reply('use -i for now <:pepeGrin:1001962955820245152>');
    let query =
    "UPDATE discord SET last_search='" +
    @@ -125,29 +125,29 @@ client.on("interactionCreate", async (interaction) => {
    "'";
    objMysq.query(query, (err, rows) => {});
    var r = request.get(
    "seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api" +
    'seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api' +
    searchQuery,
    function (err, res, body) {
    interaction.reply(body);
    }
    );
    }
    }
    if (commandName === "r") {
    if (myBanned === "yes") {
    if (commandName === 'r') {
    if (myBanned === 'yes') {
    //interaction.reply("im confused. it seems ur offline <:pepesmile:961516075135160330>");
    } else {
    var searchQuery = interaction.options.getString("search");
    var searchQuery = interaction.options.getString('search');
    //await interaction.reply('use -i for now <:pepeGrin:1001962955820245152>');
    var sql = "SELECT * FROM discord WHERE discord_id = ?";
    var sql = 'SELECT * FROM discord WHERE discord_id = ?';
    objMysq.query(sql, [senderID], function (err, rows, fields) {
    if (err) throw err;
    var preventError = rows.length;
    var errorCheck = preventError.toString();
    if (errorCheck > "0") {
    if (errorCheck > '0') {
    const myLastI = rows[0].last_search;
    var r = request.get(
    "seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api" +
    'seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api' +
    myLastI,
    function (err, res, body) {
    interaction.reply(body);
    @@ -162,168 +162,168 @@ client.on("interactionCreate", async (interaction) => {
    })();
    });

    client.on("ready", () => {
    client.on('ready', () => {
    console.log(`Logged in as ${client.user.tag}!`);
    client.user.setPresence({
    activities: [{ name: `you. GET OFF INVIS`, type: ActivityType.Watching }],
    status: "online",
    status: 'online',
    });
    });
    // Add role if reaction is added.
    client.on("messageReactionAdd", async (reaction, user) => {
    client.on('messageReactionAdd', async (reaction, user) => {
    if (reaction.message.partial) await reaction.message.fetch();
    // Verify member if they react to the message in #rules.
    if (reaction.message.id === "1007001408958103562") {
    if (reaction.message.id === '1007001408958103562') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("961462248281362453");
    member.roles.add('961462248281362453');
    }
    // 18+ Role.
    if (reaction.message.id === "1027217198445502494") {
    if (reaction.message.id === '1027217198445502494') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("975932941291114547");
    member.roles.add('975932941291114547');
    }
    // #95a9df Role.
    if (reaction.message.id === "1022701182071885904") {
    if (reaction.message.id === '1022701182071885904') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1007010851003322379");
    member.roles.add('1007010851003322379');
    }
    // #518efa Role.
    if (reaction.message.id === "1022702263858376754") {
    if (reaction.message.id === '1022702263858376754') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1017995357734584392");
    member.roles.add('1017995357734584392');
    }
    // #0da2a2 Role.
    if (reaction.message.id === "1022702315922276382") {
    if (reaction.message.id === '1022702315922276382') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1018714201218367559");
    member.roles.add('1018714201218367559');
    }
    // #deb887 Role.
    if (reaction.message.id === "1022702368518852638") {
    if (reaction.message.id === '1022702368518852638') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1020092393288110153");
    member.roles.add('1020092393288110153');
    }
    // #078b00 Role.
    if (reaction.message.id === "1022703032074518649") {
    if (reaction.message.id === '1022703032074518649') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1022696313453809674");
    member.roles.add('1022696313453809674');
    }
    // #00e1ff Role.
    if (reaction.message.id === "1022703064114802728") {
    if (reaction.message.id === '1022703064114802728') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1022696509344579615");
    member.roles.add('1022696509344579615');
    }
    // #a725ff Role.
    if (reaction.message.id === "1022703421993791619") {
    if (reaction.message.id === '1022703421993791619') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1022696608481157120");
    member.roles.add('1022696608481157120');
    }
    // #ff6f6f Role.
    if (reaction.message.id === "1022703953466622062") {
    if (reaction.message.id === '1022703953466622062') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1022703622515064923");
    member.roles.add('1022703622515064923');
    }
    // #ee15c3 Role.
    if (reaction.message.id === "1027215978867736646") {
    if (reaction.message.id === '1027215978867736646') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1023316979064508610");
    member.roles.add('1023316979064508610');
    }
    // #ccc105 Role.
    if (reaction.message.id === "1027216081988878436") {
    if (reaction.message.id === '1027216081988878436') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1023317213287043204");
    member.roles.add('1023317213287043204');
    }
    // #ffc128 Role.
    if (reaction.message.id === "1027216165229039668") {
    if (reaction.message.id === '1027216165229039668') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1023317358128930887");
    member.roles.add('1023317358128930887');
    }
    // #6ceb00 Role.
    if (reaction.message.id === "1027216226495234099") {
    if (reaction.message.id === '1027216226495234099') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1023317500512968834");
    member.roles.add('1023317500512968834');
    }
    // #25ffc1 Role.
    if (reaction.message.id === "1027216287899857077") {
    if (reaction.message.id === '1027216287899857077') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1027215369468915712");
    member.roles.add('1027215369468915712');
    }
    });

    // Remove role if reaction is removed.
    client.on("messageReactionRemove", async (reaction, user) => {
    client.on('messageReactionRemove', async (reaction, user) => {
    if (reaction.message.partial) await reaction.message.fetch();
    // 18+ Role.
    if (reaction.message.id === "1027217198445502494") {
    if (reaction.message.id === '1027217198445502494') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("975932941291114547");
    member.roles.remove('975932941291114547');
    }
    // #95a9df Role.
    if (reaction.message.id === "1022701182071885904") {
    if (reaction.message.id === '1022701182071885904') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1007010851003322379");
    member.roles.remove('1007010851003322379');
    }
    // #518efa Role.
    if (reaction.message.id === "1022702263858376754") {
    if (reaction.message.id === '1022702263858376754') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1017995357734584392");
    member.roles.remove('1017995357734584392');
    }
    // #0da2a2 Role.
    if (reaction.message.id === "1022702315922276382") {
    if (reaction.message.id === '1022702315922276382') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1018714201218367559");
    member.roles.remove('1018714201218367559');
    }
    // #deb887 Role.
    if (reaction.message.id === "1022702368518852638") {
    if (reaction.message.id === '1022702368518852638') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1020092393288110153");
    member.roles.remove('1020092393288110153');
    }
    // #078b00 Role.
    if (reaction.message.id === "1022703032074518649") {
    if (reaction.message.id === '1022703032074518649') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1022696313453809674");
    member.roles.remove('1022696313453809674');
    }
    // #00e1ff Role.
    if (reaction.message.id === "1022703064114802728") {
    if (reaction.message.id === '1022703064114802728') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1022696509344579615");
    member.roles.remove('1022696509344579615');
    }
    // #a725ff Role.
    if (reaction.message.id === "1022703421993791619") {
    if (reaction.message.id === '1022703421993791619') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1022696608481157120");
    member.roles.remove('1022696608481157120');
    }
    // #ff6f6f Role.
    if (reaction.message.id === "1022703953466622062") {
    if (reaction.message.id === '1022703953466622062') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1022703622515064923");
    member.roles.remove('1022703622515064923');
    }
    // #ee15c3 Role.
    if (reaction.message.id === "1027215978867736646") {
    if (reaction.message.id === '1027215978867736646') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1023316979064508610");
    member.roles.remove('1023316979064508610');
    }
    // #ccc105 Role.
    if (reaction.message.id === "1027216081988878436") {
    if (reaction.message.id === '1027216081988878436') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1023317213287043204");
    member.roles.remove('1023317213287043204');
    }
    // #ffc128 Role.
    if (reaction.message.id === "1027216165229039668") {
    if (reaction.message.id === '1027216165229039668') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1023317358128930887");
    member.roles.remove('1023317358128930887');
    }
    // #6ceb00 Role.
    if (reaction.message.id === "1027216226495234099") {
    if (reaction.message.id === '1027216226495234099') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1023317500512968834");
    member.roles.remove('1023317500512968834');
    }
    // #25ffc1 Role.
    if (reaction.message.id === "1027216287899857077") {
    if (reaction.message.id === '1027216287899857077') {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1027215369468915712");
    member.roles.remove('1027215369468915712');
    }
    });
    client.on("messageCreate", (msg) => {
    client.on('messageCreate', (msg) => {
    //console.log(msg);
    const chatmsg = msg.content;
    var senderID = msg.author.id;
    @@ -332,7 +332,7 @@ client.on("messageCreate", (msg) => {
    const member = await msg.guild.members.fetch(senderID); //remember you still need async
    var membersStatus = member.presence?.status;
    if (membersStatus === null || membersStatus === undefined) {
    var membersStatus = "offline";
    var membersStatus = 'offline';
    }
    //console.log(membersStatus);
    //if(membersStatus === 'offline') {
    @@ -346,30 +346,30 @@ client.on("messageCreate", (msg) => {
    // }

    //console.log(membersStatus);
    const senderName = "<@" + senderID + ">";
    const senderName = '<@' + senderID + '>';
    const senderUsername = msg.author.username;
    const senderQuery = rmF(chatmsg);
    // tiktok 'command' (detects a tiktok url and uploads the video from it)
    if (
    chatmsg.startsWith("https://vm.tiktok.com/") === true ||
    chatmsg.startsWith("https://www.tiktok.com/") === true
    chatmsg.startsWith('https://vm.tiktok.com/') === true ||
    chatmsg.startsWith('https://www.tiktok.com/') === true
    ) {
    msg.delete();
    request(
    {
    uri:
    "seledity inc secret url delete this if u cant figure out how to make your own web server with tiktok video grabbing sht" +
    'seledity inc secret url delete this if u cant figure out how to make your own web server with tiktok video grabbing sht' +
    chatmsg,
    },
    function (error, response, body) {
    (async function () {
    await new Promise((resolve) =>
    request(body)
    .pipe(fs.createWriteStream("tiktok.mp4"))
    .on("finish", function () {
    .pipe(fs.createWriteStream('tiktok.mp4'))
    .on('finish', function () {
    msg.channel.send({
    content: senderName + " sent a tiktok :)",
    files: ["./tiktok.mp4"],
    content: senderName + ' sent a tiktok :)',
    files: ['./tiktok.mp4'],
    });
    })
    );
    @@ -412,16 +412,16 @@ client.on("messageCreate", (msg) => {
    // });
    /// }
    // if a command was detected, by a message starting with "-", this is called
    const commandCheck = chatmsg.startsWith("-");
    const commandCheck = chatmsg.startsWith('-');
    if (commandCheck === true) {
    console.log("cmd");
    console.log('cmd');
    // Determine if this chat is allowed to use the bot.
    var sql = "SELECT * FROM discord WHERE discord_id = ?";
    var sql = 'SELECT * FROM discord WHERE discord_id = ?';
    objMysq.query(sql, [senderID], function (err, rows, fields) {
    if (err) throw err;
    var preventError = rows.length;
    var errorCheck = preventError.toString();
    if (errorCheck > "0") {
    if (errorCheck > '0') {
    // Grab information about sender from the database.
    const myTeleID = rows[0].discord_id;
    const myBanned = rows[0].banned;
    @@ -430,19 +430,19 @@ client.on("messageCreate", (msg) => {
    const myLastI = rows[0].last_search;
    const invis_crackdown = rows[0].invis_crackdown;
    // Check whether or not the sender is banned from using JustaBot.
    if (myBanned === "yes") {
    msg.react("❌");
    if (myBanned === 'yes') {
    msg.react('❌');
    }
    // If they aren't banned, listen to and respond to 'dash' commands.
    else {
    // Listen for command: -purge (deletes X msgs)
    if (chatmsg.startsWith("-purge") === true && aaDmin === "true") {
    if (senderQuery === "") {
    msg.react("🤨");
    if (chatmsg.startsWith('-purge') === true && aaDmin === 'true') {
    if (senderQuery === '') {
    msg.react('🤨');
    } else {
    if (Number.isInteger(+senderQuery)) {
    if (senderQuery >= 100 || senderQuery <= 0) {
    msg.react("🤨");
    msg.react('🤨');
    } else {
    var senderQueer = +senderQuery + 1;
    var senderQueer = senderQueer.toString();
    @@ -456,21 +456,21 @@ client.on("messageCreate", (msg) => {
    }
    } else {
    //not a num
    msg.react("🤨");
    msg.react('🤨');
    }
    }
    }
    // joey cmd
    if (chatmsg.startsWith("-joey") === true) {
    if (chatmsg.startsWith('-joey') === true) {
    msg.channel.send({
    content: senderName + ", fuuuuuUTTTUREE",
    files: ["./joey.mp4"],
    content: senderName + ', fuuuuuUTTTUREE',
    files: ['./joey.mp4'],
    });
    }
    // Listen for command: -ud (searches Urban Dictionary)
    if (chatmsg.startsWith("-ud") === true) {
    if (chatmsg.startsWith('-ud') === true) {
    // If sender forgot to include a search query, let them know.
    if (senderQuery === "") {
    if (senderQuery === '') {
    var botResponse =
    senderName +
    ", you also have to include what you'd like to search for on Urban Dictionary.";
    @@ -481,7 +481,7 @@ client.on("messageCreate", (msg) => {
    .then((results) => {
    var word = results[0].word;
    var def = results[0].definition;
    var botResponse = "**" + word + "**" + ": " + def;
    var botResponse = '**' + word + '**' + ': ' + def;
    msg.reply(botResponse);
    // If there was an error, describe it below.
    })
    @@ -496,42 +496,42 @@ client.on("messageCreate", (msg) => {
    }
    }
    // Listen for command: -calc (does math n sht)
    if (chatmsg.startsWith("-calc") === true) {
    if (senderQuery !== "") {
    if (chatmsg.startsWith('-calc') === true) {
    if (senderQuery !== '') {
    const re = /\d+(\+|\-|\*|\/)\d+/;
    if (re.test(senderQuery) === true) {
    var doMath = math.evaluate(senderQuery);
    var doMath = senderQuery + " = " + doMath;
    msg.reply(doMath + "\n" + senderName);
    var doMath = senderQuery + ' = ' + doMath;
    msg.reply(doMath + '\n' + senderName);
    } else {
    msg.react("🤨");
    msg.react("👎");
    msg.react('🤨');
    msg.react('👎');
    }
    } else {
    msg.react("🤨");
    msg.react('🤨');
    }
    }
    // Listen for command: -i, -R34, -gif, -r (searches Google Images through Google Custom Search API)
    if (
    chatmsg.startsWith("-i") === true ||
    chatmsg.startsWith("-R34") === true ||
    chatmsg.startsWith("-gif") === true ||
    chatmsg.startsWith("-r") === true
    chatmsg.startsWith('-i') === true ||
    chatmsg.startsWith('-R34') === true ||
    chatmsg.startsWith('-gif') === true ||
    chatmsg.startsWith('-r') === true
    ) {
    if (senderQuery === "" && chatmsg.startsWith("-r") === false) {
    if (senderQuery === '' && chatmsg.startsWith('-r') === false) {
    var botResponse =
    senderName +
    ", you also have to include what you'd like to search for on Google Images.";
    msg.reply(botResponse);
    } else {
    var searchQuery = senderQuery;
    if (chatmsg.startsWith("-R34") === true) {
    var searchQuery = senderQuery + " rule 34";
    if (chatmsg.startsWith('-R34') === true) {
    var searchQuery = senderQuery + ' rule 34';
    }
    if (chatmsg.startsWith("-gif") === true) {
    var searchQuery = senderQuery + " gif";
    if (chatmsg.startsWith('-gif') === true) {
    var searchQuery = senderQuery + ' gif';
    }
    if (chatmsg.startsWith("-r") === true) {
    if (chatmsg.startsWith('-r') === true) {
    var searchQuery = myLastI;
    }
    let query =
    @@ -542,11 +542,11 @@ client.on("messageCreate", (msg) => {
    "'";
    objMysq.query(query, (err, rows) => {});
    var r = request.get(
    "seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api" +
    'seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api' +
    searchQuery,
    function (err, res, body) {
    if (err !== null || body === "failed" || body === "quota") {
    if (body === "quota") {
    if (err !== null || body === 'failed' || body === 'quota') {
    if (body === 'quota') {
    var botResponse =
    senderName +
    ', the daily quota for Google Images was exceeded. I saved "' +
    @@ -560,15 +560,15 @@ client.on("messageCreate", (msg) => {
    '" on Google Images. I will make one more search attempt for you.';
    // vv Attempt to search for the image again, if it failed. vv
    var retryI = request.get(
    "seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api" +
    'seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api' +
    searchQuery,
    function (err, res, body) {
    if (
    err !== null ||
    body === "failed" ||
    body === "quota"
    body === 'failed' ||
    body === 'quota'
    ) {
    if (body === "quota") {
    if (body === 'quota') {
    var botResponse =
    senderName +
    ', the daily quota for Google Images was exceeded. I saved "' +
    @@ -611,23 +611,23 @@ client.on("messageCreate", (msg) => {
    }
    }
    // ai
    if (chatmsg.startsWith("-ai") === true) {
    if (aiEnabled === "no") {
    msg.react("❌");
    if (chatmsg.startsWith('-ai') === true) {
    if (aiEnabled === 'no') {
    msg.react('❌');
    } else {
    const got = require("got");
    const got = require('got');
    const question = senderQuery;
    (async () => {
    const url =
    "https://api.openai.com/v1/engines/davinci/completions";
    'https://api.openai.com/v1/engines/davinci/completions';
    const prompt = `${question}`;
    const params = {
    prompt: prompt,
    max_tokens: 150,
    temperature: 0.7,
    frequency_penalty: 1,
    presence_penalty: 0.4,
    stop: "\nHuman",
    stop: '\nHuman',
    };
    const headers = {
    Authorization: `Bearer ${process.env.OPENAI_SECRET_KEY}`,
    @@ -638,7 +638,7 @@ client.on("messageCreate", (msg) => {
    .post(url, { json: params, headers: headers })
    .json();
    output = `${prompt}${response.choices[0].text}`;
    msg.reply(senderName + "\n\n" + output + "...");
    msg.reply(senderName + '\n\n' + output + '...');
    } catch (err) {
    console.log(err);
    }
    @@ -651,17 +651,17 @@ client.on("messageCreate", (msg) => {
    var insdata = {
    discord_id: senderID,
    username: senderUsername,
    last_search: "undefined",
    last_search: 'undefined',
    };
    objMysq.query(
    "INSERT INTO discord SET ?",
    'INSERT INTO discord SET ?',
    insdata,
    function (err, result) {}
    );
    msg.react("🤨");
    msg.react('🤨');
    }
    });
    }
    })(); // erase this
    });
    client.login("ur discord key sht");
    client.login('ur discord key sht');
  2. dooderstem revised this gist Jul 11, 2023. No changes.
  3. dooderstem revised this gist Jul 10, 2023. 2 changed files with 1 addition and 2 deletions.
    2 changes: 0 additions & 2 deletions Shiffman_Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -16,8 +16,6 @@ client.on("message", commandHandler);
    client.login(process.env.BOT_TOKEN);
    ```

    ## Command files

    ```js
    // src/commands/ping.js
    module.exports = async (msg) => {
    1 change: 1 addition & 0 deletions doodercodes_Fancy-Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,5 @@
    ```js
    // ./app.js
    const discord = require("discord.js");
    const config = require("./config.json");
    const fs = require("node:fs");
  4. dooderstem revised this gist Jul 10, 2023. 1 changed file with 21 additions and 1 deletion.
    22 changes: 21 additions & 1 deletion doodercodes_Fancy-Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -105,4 +105,24 @@ const read = (client) => {
    };

    module.exports = read;
    ```
    ```

    ```js
    // commands/uptime/uptime.js
    function uptime(client) {
    let days = Math.floor(client.uptime / 86400000);
    let hrs = Math.floor(client.uptime / 3600000) % 24;
    let minutes = Math.floor(client.uptime / 60000) % 60;
    let seconds = Math.floor(client.uptime / 1000) % 60;
    return `__Uptime:__\n${days}d ${hrs}h ${minutes}m ${seconds}s`;
    }
    const obj = {
    name: "Uptime",
    category: "Utility",
    description: "Uptime",
    run: async (client, message, args) => {
    message.channel.send(uptime(client));
    },
    };
    module.exports = obj;
    ```
  5. dooderstem revised this gist Jul 10, 2023. 1 changed file with 108 additions and 0 deletions.
    108 changes: 108 additions & 0 deletions doodercodes_Fancy-Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,108 @@
    ```js
    const discord = require("discord.js");
    const config = require("./config.json");
    const fs = require("node:fs");
    const path = require("node:path");
    require("dotenv").config();

    const intents = [
    discord.GatewayIntentBits.Guilds,
    discord.GatewayIntentBits.GuildMessages,
    discord.GatewayIntentBits.MessageContent,
    ];

    const client = new discord.Client({
    disableEveryone: false,
    intents,
    });

    const $PREFIX = config.default_prefix;
    client.commands = new discord.Collection();

    ["command"].forEach((handler) => {
    require(`./handlers/${handler}`)(client);
    });

    // on client ready
    client.once(discord.Events.ClientReady, (c) => {
    console.log(`${c.user.tag} is Online!`);
    client.user.setPresence({
    activities: [
    {
    name: "with DISCORD.JS",
    type: discord.ActivityType.Playing,
    },
    ],
    status: "dnd",
    });
    });

    client.on("messageCreate", async (message) => {
    if (message.author.bot) return;
    if (!message.content.startsWith($PREFIX)) return;

    // array of everything in the message but the prefix
    const argsArr = message.content
    .toLowerCase()
    .slice($PREFIX.length)
    .trim()
    .split(/ +/g);
    // the command (coming right after the prefix)
    const cmd = argsArr.shift().toLowerCase();

    if (cmd.length === 0) return;
    let command = client.commands.get(cmd);
    if (command) {
    command.run(client, message, argsArr);
    console.log(command);
    }
    if (!command) console.log("Command Not Found");
    // bot mentioned
    const prefixMention = new RegExp(`^<@!?${client.user.id}>( |)$`);
    if (message.content.match(prefixMention)) {
    console.log(`${client.user.tag} was mentioned`);
    message.reply(`My prefix is \`${config.default_prefix}\``);
    }
    });

    client.login(process.env.TOKEN);
    ```

    ```js
    // handlers/command.js
    const fs = require("node:fs");
    const path = require("node:path");
    const ascii = require("ascii-table");

    const commands = path.join(__dirname, "../commands");

    let table = new ascii(`${commands}`);
    table.setHeading("Command", "Category", "Description", "Load status");

    const read = (client) => {
    fs.readdirSync(commands).forEach((dir) => {
    const commandsContainer = `${commands}/${dir}/`;
    const commandsArray = fs
    .readdirSync(commandsContainer)
    .filter((file) => file.endsWith(".js"));

    for (const file of commandsArray) {
    const pull = require(`${commandsContainer}/${file}`);
    const { name, category, description, run } = pull;
    if (name) cmdName = name.toString().toLowerCase();
    else cmdName = "";

    if (cmdName && category && description && run) {
    client.commands.set(cmdName, pull);
    table.addRow(cmdName, category, description, "");
    } else {
    table.addRow(cmdName);
    continue;
    }
    }
    });
    console.log(table.toString());
    };

    module.exports = read;
    ```
  6. dooderstem revised this gist Jul 10, 2023. No changes.
  7. dooderstem revised this gist Jul 10, 2023. No changes.
  8. dooderstem revised this gist Jul 10, 2023. 1 changed file with 77 additions and 0 deletions.
    77 changes: 77 additions & 0 deletions Shiffman_Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -47,3 +47,80 @@ module.exports = async (msg, { args, functions }) => {
    }
    };
    ```

    ```js
    // src/commands/whoami.js
    const discord = require("discord.js");

    module.exports = async (msg, { args }) => {
    let member;
    if (args.length === 0) {
    member = msg.member;
    } else {
    const allMembers = (await msg.guild.members.fetch())
    .array()
    .filter((member) => {
    try {
    return (
    member.user.username.toLowerCase() ===
    args.join(" ").toLowerCase() ||
    member.nickname.toLowerCase() === args.join(" ").toLowerCase()
    );
    } catch (err) {
    return false;
    }
    });

    if (allMembers.length == 0) {
    return msg.channel.send("❌ User not Found");
    }
    member = (
    await msg.guild.members.fetch({ query: args.join(" ") })
    ).array()[0];
    }

    const joined = Intl.DateTimeFormat("en-US").format(member.joinedAt);
    const created = Intl.DateTimeFormat("en-US").format(member.user.createdAt);

    const avatar = member.user.displayAvatarURL();

    const roles = async () =>
    Promise.all(
    member._roles
    .filter((r) => r.id !== msg.guild.id)
    .map(async (r) => await msg.guild.roles.fetch(r))
    ) || "none";

    var userRoles = await roles();

    if (userRoles.length == 0) {
    userRoles = ["This user has no roles."];
    }

    const inline = true;

    const embed = new discord.MessageEmbed("")
    .setFooter(member.displayName, avatar)
    .setThumbnail(avatar)
    .setColor(
    member.displayHexColor === "#000000" ? "#FFFFFF" : member.displayHexColor
    )
    .addField("status", member.displayName + " is " + member.presence.status)
    .addFields(
    { name: "Display Name", value: member.displayName, inline },
    { name: "Joined at", value: joined, inline },
    { name: "Roles", value: userRoles, inline },
    {
    name: "Bot",
    value: member.user.bot
    ? "This user is a bot, Beep Boop"
    : "This user is not a bot",
    inline,
    },
    { name: "account created", value: created, inline }
    )
    .setAuthor(member.displayName, avatar);

    msg.channel.send(embed);
    };
    ```
  9. dooderstem revised this gist Jul 10, 2023. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions Shiffman_Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -17,6 +17,7 @@ client.login(process.env.BOT_TOKEN);
    ```

    ## Command files

    ```js
    // src/commands/ping.js
    module.exports = async (msg) => {
  10. dooderstem revised this gist Jul 10, 2023. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions Shiffman_Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -16,6 +16,7 @@ client.on("message", commandHandler);
    client.login(process.env.BOT_TOKEN);
    ```

    ## Command files
    ```js
    // src/commands/ping.js
    module.exports = async (msg) => {
  11. dooderstem revised this gist Jul 10, 2023. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions Shiffman_Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -25,6 +25,7 @@ module.exports = async (msg) => {
    ```

    ```js
    // src/commands/help.js
    const { stripIndents } = require("common-tags");

    module.exports = async (msg, { args, functions }) => {
  12. dooderstem revised this gist Jul 10, 2023. 1 changed file with 21 additions and 0 deletions.
    21 changes: 21 additions & 0 deletions Shiffman_Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -23,3 +23,24 @@ module.exports = async (msg) => {
    console.log("Ping Pong! (sent)");
    };
    ```

    ```js
    const { stripIndents } = require("common-tags");

    module.exports = async (msg, { args, functions }) => {
    if (args.length === 0) {
    let commands = stripIndents`The Available commands are:
    ${"`" + Object.keys(functions).join("`, `") + "`"}
    tip: type ${"`!help <command>`"} for help that command`;
    msg.channel.send(commands);
    } else {
    const helptext = functions[args[0]];
    if (helptext) {
    msg.channel.send(helptext.helptext);
    } else {
    msg.channel.send("command not found");
    }
    }
    };
    ```
  13. dooderstem revised this gist Jul 10, 2023. 1 changed file with 14 additions and 11 deletions.
    25 changes: 14 additions & 11 deletions Shiffman_Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -1,22 +1,25 @@
    ```js src/index.js
    const Discord = require('discord.js');
    require('dotenv').config();
    ```js
    // src/index.js
    const Discord = require("discord.js");
    require("dotenv").config();

    const commandHandler = require('./commands');
    const commandHandler = require("./commands");

    const client = new Discord.Client();

    client.once('ready', () => {
    console.log('🤖 Beep beep! I am ready!');
    client.once("ready", () => {
    console.log("🤖 Beep beep! I am ready!");
    });

    client.on('message', commandHandler);
    client.on("message", commandHandler);

    client.login(process.env.BOT_TOKEN);
    ```

    ```js src/commands/ping.js
    ```js
    // src/commands/ping.js
    module.exports = async (msg) => {
    await msg.channel.send('pong');
    console.log('Ping Pong! (sent)');
    };
    await msg.channel.send("pong");
    console.log("Ping Pong! (sent)");
    };
    ```
  14. dooderstem revised this gist Jul 10, 2023. 1 changed file with 22 additions and 1 deletion.
    23 changes: 22 additions & 1 deletion Shiffman_Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -1 +1,22 @@
    ‎‎​
    ```js src/index.js
    const Discord = require('discord.js');
    require('dotenv').config();

    const commandHandler = require('./commands');

    const client = new Discord.Client();

    client.once('ready', () => {
    console.log('🤖 Beep beep! I am ready!');
    });

    client.on('message', commandHandler);

    client.login(process.env.BOT_TOKEN);
    ```

    ```js src/commands/ping.js
    module.exports = async (msg) => {
    await msg.channel.send('pong');
    console.log('Ping Pong! (sent)');
    };
  15. dooderstem revised this gist Jul 10, 2023. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions Shiffman_Discord-Bot.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    ‎‎​
  16. dooderstem renamed this gist Jul 10, 2023. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  17. dooderstem revised this gist Dec 13, 2022. 1 changed file with 667 additions and 1 deletion.
    668 changes: 667 additions & 1 deletion discordbot.js
    Original file line number Diff line number Diff line change
    @@ -1 +1,667 @@
    ‎‎
    // Package things needed for the bot & commands.
    //const Discord = require('discord.js');
    //const client = new Discord.Client({partials: ['MESSAGE', 'CHANNEL', 'REACTION'], intents: [ Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES, Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Discord.Intents.FLAGS.GUILD_MEMBERS ]});
    const {
    Client,
    GatewayIntentBits,
    Partials,
    ActivityType,
    } = require("discord.js");
    const client = new Client({
    partials: [Partials.Message, Partials.Channel, Partials.Reaction],
    intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
    GatewayIntentBits.GuildMessageReactions,
    GatewayIntentBits.GuildMembers,
    GatewayIntentBits.GuildPresences,
    ],
    });
    const ud = require("urban-dictionary");
    const mysql = require("mysql");
    const request = require("request");
    const fs = require("fs");
    const http = require("http");
    const https = require("https");
    const math = require("mathjs");
    const unixTime = Math.floor(Date.now() / 1000);
    // Create a connection to the mysql database
    function mysqlConnect() {
    var mysqlParams = mysql.createConnection({
    host: "127.0.0.1",
    user: "ur user here",
    password: "ur password here",
    database: "ur db here",
    });
    return mysqlParams;
    }
    const objMysq = mysqlConnect();
    // Functions needed for commands.
    // Removes first word.
    function rmF(str) {
    const indexOfSpace = str.indexOf(" ");
    if (indexOfSpace === -1) {
    return "";
    }
    return str.substring(indexOfSpace + 1);
    }
    // Sleep function, when you want the command to pause for a bit.
    function sleep(time, callback) {
    var stop = new Date().getTime();
    while (new Date().getTime() < stop + time) {}
    callback();
    }

    const { SlashCommandBuilder, Routes } = require("discord.js");
    const { REST } = require("@discordjs/rest");

    const commands = [
    new SlashCommandBuilder()
    .setName("i")
    .setDescription("Searches Google Images")
    .addStringOption((option) =>
    option
    .setName("search")
    .setDescription("enter search term")
    .setRequired(true)
    ),
    new SlashCommandBuilder()
    .setName("r")
    .setDescription("Performs your last /i search again"),
    ].map((command) => command.toJSON());

    const rest = new REST({ version: "10" }).setToken("ur token here");

    rest
    .put(
    Routes.applicationGuildCommands(
    "ur server shit here ig",
    "ur server shit here ig"
    ),
    { body: commands }
    )
    .then(() => console.log("Successfully registered application commands."))
    .catch(console.error);

    client.on("interactionCreate", async (interaction) => {
    if (!interaction.isChatInputCommand()) return;

    const { commandName } = interaction;
    var senderID = interaction.user.id;
    (async () => {
    //await needs async
    const member = await interaction.guild.members.fetch(senderID); //remember you still need async
    var membersStatus = member.presence?.status;
    if (membersStatus === null || membersStatus === undefined) {
    var membersStatus = "offline";
    }
    // Determine if this chat is allowed to use the bot.
    var sql = "SELECT * FROM discord WHERE discord_id = ?";
    objMysq.query(sql, [senderID], function (err, rows, fields) {
    if (err) throw err;
    var preventError = rows.length;
    var errorCheck = preventError.toString();
    if (errorCheck > "0") {
    // Grab information about sender from the database.
    const myTeleID = rows[0].discord_id;
    const myBanned = rows[0].banned;
    const aiEnabled = rows[0].ai_enabled;
    const aaDmin = rows[0].ai_admin;
    const myLastI = rows[0].last_search;
    // Check whether or not the sender is banned from using JustaBot.

    if (commandName === "i") {
    if (myBanned === "yes") {
    //interaction.reply("im confused. it seems ur offline <:pepesmile:961516075135160330>");
    } else {
    var searchQuery = interaction.options.getString("search");
    //await interaction.reply('use -i for now <:pepeGrin:1001962955820245152>');
    let query =
    "UPDATE discord SET last_search='" +
    searchQuery +
    "' WHERE discord_id='" +
    senderID +
    "'";
    objMysq.query(query, (err, rows) => {});
    var r = request.get(
    "seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api" +
    searchQuery,
    function (err, res, body) {
    interaction.reply(body);
    }
    );
    }
    }
    if (commandName === "r") {
    if (myBanned === "yes") {
    //interaction.reply("im confused. it seems ur offline <:pepesmile:961516075135160330>");
    } else {
    var searchQuery = interaction.options.getString("search");
    //await interaction.reply('use -i for now <:pepeGrin:1001962955820245152>');
    var sql = "SELECT * FROM discord WHERE discord_id = ?";
    objMysq.query(sql, [senderID], function (err, rows, fields) {
    if (err) throw err;
    var preventError = rows.length;
    var errorCheck = preventError.toString();
    if (errorCheck > "0") {
    const myLastI = rows[0].last_search;
    var r = request.get(
    "seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api" +
    myLastI,
    function (err, res, body) {
    interaction.reply(body);
    }
    );
    }
    });
    }
    }
    }
    });
    })();
    });

    client.on("ready", () => {
    console.log(`Logged in as ${client.user.tag}!`);
    client.user.setPresence({
    activities: [{ name: `you. GET OFF INVIS`, type: ActivityType.Watching }],
    status: "online",
    });
    });
    // Add role if reaction is added.
    client.on("messageReactionAdd", async (reaction, user) => {
    if (reaction.message.partial) await reaction.message.fetch();
    // Verify member if they react to the message in #rules.
    if (reaction.message.id === "1007001408958103562") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("961462248281362453");
    }
    // 18+ Role.
    if (reaction.message.id === "1027217198445502494") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("975932941291114547");
    }
    // #95a9df Role.
    if (reaction.message.id === "1022701182071885904") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1007010851003322379");
    }
    // #518efa Role.
    if (reaction.message.id === "1022702263858376754") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1017995357734584392");
    }
    // #0da2a2 Role.
    if (reaction.message.id === "1022702315922276382") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1018714201218367559");
    }
    // #deb887 Role.
    if (reaction.message.id === "1022702368518852638") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1020092393288110153");
    }
    // #078b00 Role.
    if (reaction.message.id === "1022703032074518649") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1022696313453809674");
    }
    // #00e1ff Role.
    if (reaction.message.id === "1022703064114802728") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1022696509344579615");
    }
    // #a725ff Role.
    if (reaction.message.id === "1022703421993791619") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1022696608481157120");
    }
    // #ff6f6f Role.
    if (reaction.message.id === "1022703953466622062") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1022703622515064923");
    }
    // #ee15c3 Role.
    if (reaction.message.id === "1027215978867736646") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1023316979064508610");
    }
    // #ccc105 Role.
    if (reaction.message.id === "1027216081988878436") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1023317213287043204");
    }
    // #ffc128 Role.
    if (reaction.message.id === "1027216165229039668") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1023317358128930887");
    }
    // #6ceb00 Role.
    if (reaction.message.id === "1027216226495234099") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1023317500512968834");
    }
    // #25ffc1 Role.
    if (reaction.message.id === "1027216287899857077") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.add("1027215369468915712");
    }
    });

    // Remove role if reaction is removed.
    client.on("messageReactionRemove", async (reaction, user) => {
    if (reaction.message.partial) await reaction.message.fetch();
    // 18+ Role.
    if (reaction.message.id === "1027217198445502494") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("975932941291114547");
    }
    // #95a9df Role.
    if (reaction.message.id === "1022701182071885904") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1007010851003322379");
    }
    // #518efa Role.
    if (reaction.message.id === "1022702263858376754") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1017995357734584392");
    }
    // #0da2a2 Role.
    if (reaction.message.id === "1022702315922276382") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1018714201218367559");
    }
    // #deb887 Role.
    if (reaction.message.id === "1022702368518852638") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1020092393288110153");
    }
    // #078b00 Role.
    if (reaction.message.id === "1022703032074518649") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1022696313453809674");
    }
    // #00e1ff Role.
    if (reaction.message.id === "1022703064114802728") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1022696509344579615");
    }
    // #a725ff Role.
    if (reaction.message.id === "1022703421993791619") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1022696608481157120");
    }
    // #ff6f6f Role.
    if (reaction.message.id === "1022703953466622062") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1022703622515064923");
    }
    // #ee15c3 Role.
    if (reaction.message.id === "1027215978867736646") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1023316979064508610");
    }
    // #ccc105 Role.
    if (reaction.message.id === "1027216081988878436") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1023317213287043204");
    }
    // #ffc128 Role.
    if (reaction.message.id === "1027216165229039668") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1023317358128930887");
    }
    // #6ceb00 Role.
    if (reaction.message.id === "1027216226495234099") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1023317500512968834");
    }
    // #25ffc1 Role.
    if (reaction.message.id === "1027216287899857077") {
    const member = await reaction.message.guild.members.fetch(user.id);
    member.roles.remove("1027215369468915712");
    }
    });
    client.on("messageCreate", (msg) => {
    //console.log(msg);
    const chatmsg = msg.content;
    var senderID = msg.author.id;
    (async () => {
    //await needs async
    const member = await msg.guild.members.fetch(senderID); //remember you still need async
    var membersStatus = member.presence?.status;
    if (membersStatus === null || membersStatus === undefined) {
    var membersStatus = "offline";
    }
    //console.log(membersStatus);
    //if(membersStatus === 'offline') {
    // console.log(membersStatus);
    // msg.react('<:getoffinvis:1011041876096323714>');
    // msg.react('❌');
    // msg.react('💩');
    // member.timeout(1 * 60 * 1000, 'chatting while invis')
    // .then()
    // .catch();
    // }

    //console.log(membersStatus);
    const senderName = "<@" + senderID + ">";
    const senderUsername = msg.author.username;
    const senderQuery = rmF(chatmsg);
    // tiktok 'command' (detects a tiktok url and uploads the video from it)
    if (
    chatmsg.startsWith("https://vm.tiktok.com/") === true ||
    chatmsg.startsWith("https://www.tiktok.com/") === true
    ) {
    msg.delete();
    request(
    {
    uri:
    "seledity inc secret url delete this if u cant figure out how to make your own web server with tiktok video grabbing sht" +
    chatmsg,
    },
    function (error, response, body) {
    (async function () {
    await new Promise((resolve) =>
    request(body)
    .pipe(fs.createWriteStream("tiktok.mp4"))
    .on("finish", function () {
    msg.channel.send({
    content: senderName + " sent a tiktok :)",
    files: ["./tiktok.mp4"],
    });
    })
    );
    })();
    }
    );
    }
    // ifunny 'command' (detects a ifunny url and uploads the video from it)
    // if(chatmsg.startsWith('https://ifunny.co/video/') === true) {
    // msg.delete();
    // request({uri: "http://192.168.8.141/ifunny/?u=" + chatmsg},
    // function(error, response, body) {
    // (async function(){
    // await new Promise(resolve =>
    // request(body)
    // .pipe(fs.createWriteStream('ifunny.h264'))
    // .on('finish', async function () {
    // console.log('ok now next');
    // console.log('....');
    // const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path;
    // const ffmpeg = require('fluent-ffmpeg');
    // ffmpeg.setFfmpegPath(ffmpegPath);
    // var inFilename = "ifunny.h264";
    // var outFilename = "ifunny.mp4";
    // await new Promise(resolve =>
    // ffmpeg(inFilename)
    // .outputOptions('-r 24') // this will copy the data instead or reencode it
    // .save(outFilename)
    // .on('end', function () {
    // console.log('ok');
    // msg.channel.send({
    // content: senderName + " sent an ifunny video :)",
    /// files: [
    // "./ifunny.mp4"
    // ]
    // });
    // }));
    // }));
    // })()
    // });
    /// }
    // if a command was detected, by a message starting with "-", this is called
    const commandCheck = chatmsg.startsWith("-");
    if (commandCheck === true) {
    console.log("cmd");
    // Determine if this chat is allowed to use the bot.
    var sql = "SELECT * FROM discord WHERE discord_id = ?";
    objMysq.query(sql, [senderID], function (err, rows, fields) {
    if (err) throw err;
    var preventError = rows.length;
    var errorCheck = preventError.toString();
    if (errorCheck > "0") {
    // Grab information about sender from the database.
    const myTeleID = rows[0].discord_id;
    const myBanned = rows[0].banned;
    const aiEnabled = rows[0].ai_enabled;
    const aaDmin = rows[0].ai_admin;
    const myLastI = rows[0].last_search;
    const invis_crackdown = rows[0].invis_crackdown;
    // Check whether or not the sender is banned from using JustaBot.
    if (myBanned === "yes") {
    msg.react("❌");
    }
    // If they aren't banned, listen to and respond to 'dash' commands.
    else {
    // Listen for command: -purge (deletes X msgs)
    if (chatmsg.startsWith("-purge") === true && aaDmin === "true") {
    if (senderQuery === "") {
    msg.react("🤨");
    } else {
    if (Number.isInteger(+senderQuery)) {
    if (senderQuery >= 100 || senderQuery <= 0) {
    msg.react("🤨");
    } else {
    var senderQueer = +senderQuery + 1;
    var senderQueer = senderQueer.toString();
    async function clear() {
    const fetched = await msg.channel.messages.fetch({
    limit: senderQueer,
    });
    msg.channel.bulkDelete(fetched);
    }
    clear();
    }
    } else {
    //not a num
    msg.react("🤨");
    }
    }
    }
    // joey cmd
    if (chatmsg.startsWith("-joey") === true) {
    msg.channel.send({
    content: senderName + ", fuuuuuUTTTUREE",
    files: ["./joey.mp4"],
    });
    }
    // Listen for command: -ud (searches Urban Dictionary)
    if (chatmsg.startsWith("-ud") === true) {
    // If sender forgot to include a search query, let them know.
    if (senderQuery === "") {
    var botResponse =
    senderName +
    ", you also have to include what you'd like to search for on Urban Dictionary.";
    msg.reply(botResponse);
    } else {
    // Search the query on UD.
    ud.define(senderQuery)
    .then((results) => {
    var word = results[0].word;
    var def = results[0].definition;
    var botResponse = "**" + word + "**" + ": " + def;
    msg.reply(botResponse);
    // If there was an error, describe it below.
    })
    .catch((error) => {
    var botResponse =
    senderName +
    ', I could not find anything for "' +
    senderQuery +
    '" on Urban Dictionary.';
    msg.reply(botResponse);
    });
    }
    }
    // Listen for command: -calc (does math n sht)
    if (chatmsg.startsWith("-calc") === true) {
    if (senderQuery !== "") {
    const re = /\d+(\+|\-|\*|\/)\d+/;
    if (re.test(senderQuery) === true) {
    var doMath = math.evaluate(senderQuery);
    var doMath = senderQuery + " = " + doMath;
    msg.reply(doMath + "\n" + senderName);
    } else {
    msg.react("🤨");
    msg.react("👎");
    }
    } else {
    msg.react("🤨");
    }
    }
    // Listen for command: -i, -R34, -gif, -r (searches Google Images through Google Custom Search API)
    if (
    chatmsg.startsWith("-i") === true ||
    chatmsg.startsWith("-R34") === true ||
    chatmsg.startsWith("-gif") === true ||
    chatmsg.startsWith("-r") === true
    ) {
    if (senderQuery === "" && chatmsg.startsWith("-r") === false) {
    var botResponse =
    senderName +
    ", you also have to include what you'd like to search for on Google Images.";
    msg.reply(botResponse);
    } else {
    var searchQuery = senderQuery;
    if (chatmsg.startsWith("-R34") === true) {
    var searchQuery = senderQuery + " rule 34";
    }
    if (chatmsg.startsWith("-gif") === true) {
    var searchQuery = senderQuery + " gif";
    }
    if (chatmsg.startsWith("-r") === true) {
    var searchQuery = myLastI;
    }
    let query =
    "UPDATE discord SET last_search='" +
    searchQuery +
    "' WHERE discord_id='" +
    senderID +
    "'";
    objMysq.query(query, (err, rows) => {});
    var r = request.get(
    "seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api" +
    searchQuery,
    function (err, res, body) {
    if (err !== null || body === "failed" || body === "quota") {
    if (body === "quota") {
    var botResponse =
    senderName +
    ', the daily quota for Google Images was exceeded. I saved "' +
    searchQuery +
    '" as your last search. Type "-r" later to try again.';
    } else {
    var botResponse =
    senderName +
    ', an error occured while searching for "' +
    searchQuery +
    '" on Google Images. I will make one more search attempt for you.';
    // vv Attempt to search for the image again, if it failed. vv
    var retryI = request.get(
    "seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api" +
    searchQuery,
    function (err, res, body) {
    if (
    err !== null ||
    body === "failed" ||
    body === "quota"
    ) {
    if (body === "quota") {
    var botResponse =
    senderName +
    ', the daily quota for Google Images was exceeded. I saved "' +
    searchQuery +
    '" as your last search. Type "-r" later to try again.';
    } else {
    var botResponse =
    senderName +
    ', searching for "' +
    searchQuery +
    '" on Google Images failed again. Type "-r" to retry your search.';
    }
    msg.reply(botResponse);
    } else {
    var optionalPhotoRetry = {
    caption: '"' + searchQuery + '" ' + senderName,
    };
    var embed = {
    image: {
    url: body.toString(),
    },
    };
    msg.reply(body);
    }
    }
    );
    // ^^ Attempt to search for the image again, if it failed. ^^
    }
    msg.reply(botResponse);
    } else {
    var embed = {
    image: {
    url: body.toString(),
    },
    };
    msg.reply(body);
    }
    }
    );
    }
    }
    // ai
    if (chatmsg.startsWith("-ai") === true) {
    if (aiEnabled === "no") {
    msg.react("❌");
    } else {
    const got = require("got");
    const question = senderQuery;
    (async () => {
    const url =
    "https://api.openai.com/v1/engines/davinci/completions";
    const prompt = `${question}`;
    const params = {
    prompt: prompt,
    max_tokens: 150,
    temperature: 0.7,
    frequency_penalty: 1,
    presence_penalty: 0.4,
    stop: "\nHuman",
    };
    const headers = {
    Authorization: `Bearer ${process.env.OPENAI_SECRET_KEY}`,
    };

    try {
    const response = await got
    .post(url, { json: params, headers: headers })
    .json();
    output = `${prompt}${response.choices[0].text}`;
    msg.reply(senderName + "\n\n" + output + "...");
    } catch (err) {
    console.log(err);
    }
    })();
    }
    }
    // ai
    }
    } else {
    var insdata = {
    discord_id: senderID,
    username: senderUsername,
    last_search: "undefined",
    };
    objMysq.query(
    "INSERT INTO discord SET ?",
    insdata,
    function (err, result) {}
    );
    msg.react("🤨");
    }
    });
    }
    })(); // erase this
    });
    client.login("ur discord key sht");
  18. dooderstem created this gist Dec 13, 2022.
    1 change: 1 addition & 0 deletions discordbot.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    ‎‎