This commit is contained in:
mertoalex 2022-12-25 15:43:18 +03:00
parent ce23662f91
commit d8a3ce0354
5 changed files with 1451 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
/node_modules/
/tmp.*
/config.json

4
config.json.def Normal file
View File

@ -0,0 +1,4 @@
{
"token": "token here!",
"prefix": "$ " //yes, this is default prefix 💀
}

175
main.js Normal file
View File

@ -0,0 +1,175 @@
var shell = require('shelljs')
const fs = require("fs")
const Discord = require("discord.js")
const VDiscord = require('@discordjs/voice')
const player = VDiscord.createAudioPlayer({behaviors: {noSubscriber: VDiscord.NoSubscriberBehavior.Pause}})
const client = new Discord.Client({
intents: [
//yetkiler
Discord.GatewayIntentBits.Guilds,
Discord.GatewayIntentBits.GuildVoiceStates,
Discord.GatewayIntentBits.GuildMessages,
Discord.GatewayIntentBits.MessageContent
]
})
var loop = false
const json = require("./config.json")
const prefixregex = json.prefix.replace("$", "\\\$")
const translate_help = `\`\`\`
translate [--help] TRANSLATING_LANGUAGE TRANSLATED_LANGUAGE TRANSLATING_TEXT
--help shows this help message
TRANSLATING_LANGUAGE:
language that you write to translate, e.g. turkish
TRANSLATED_LANGUAGE:
language that you want to get, e.g. english
TRANSLATING_TEXT:
the text that you want to translated, e.g. "Merhaba, Ben on dört yaşındayım."
example for command:
$ translate tr en "Merhaba, Ben on dört yaşındayım."
> "Hello, I am fourteen years old."
\`\`\``
async function translate(lang1, lang2, text) {
const res = await fetch("https://translate.terraprint.co/translate", {
method: "POST",
body: JSON.stringify({
q: text,
source: lang1,
target: lang2,
format: "text",
api_key: ""
}),
headers: { "Content-Type": "application/json" }
})
return res.json()
}
function error(err,msg) {
try {
msg.reply(`Error while downloading sound:\`\`\`\n${"" + err}\n\`\`\``)
} catch {
console.log(`Error while downloading sound:\n${"" + err}\n`)
}
}
client.on("ready", () => {
console.log(`Logged in as ${client.user.tag}!`)
})
client.on("messageCreate", async (msg) => {
if (msg.author.bot && msg.author.id != 1051276127760556135) return
if (RegExp(prefixregex).test(msg.content) && !msg.author.bot) {
var argv = msg.content.replace(RegExp('^' + prefixregex), '')
var args = argv.split(' ')
const tmp = args.indexOf('')
if (tmp > -1) args.splice(tmp, 1)
switch (args[0]) {
case "translate":
if (args[3] == undefined) { //yep, actually there is no --help lol
msg.reply(translate_help)
break
}
try {
var translated = await translate(args[1], args[2], argv.replace(RegExp('^' + args[0]), '').replace(' ' + args[1], '').replace(' ' + args[2], '').replace(/^ /, ''))
msg.reply(translated.translatedText)
} catch (err) {
console.log(`\`\`\`${err}\`\`\``)
} finally {
break
}
case "echo":
if (args[1] != undefined) {
msg.reply(argv.replace(RegExp('^' + args[0]), ''))
}
break
case "ram":
if (args[1] != undefined) {
msg.delete()
msg.channel.send(argv.replace(RegExp('^' + args[0]), ''))
}
break
case "neofetch":
msg.reply(`\`\`\`\n${shell.exec("neofetch --stdout --color_blocks off", { silent: true }).stdout}\n\`\`\``)
break
case "where":
msg.reply("idk, I forgor :skull:")
break
case "whoami":
msg.reply(`${msg.author.username}`)
break
case "play":
if (!msg.member.voice.channel) {
msg.reply("you aren't in any voice channel!")
break
}
shell.exec("rm -v tmp.*",{silent: true})
download = undefined; resource = undefined; stream = undefined
const connection = VDiscord.joinVoiceChannel({ channelId: msg.member.voice.channel.id, guildId: msg.member.voice.channel.guild.id, adapterCreator: msg.member.voice.channel.guild.voiceAdapterCreator })
if (args[1]) {
if (args[1].startsWith("https://")) {
if (args[1].includes("youtube.com/") || args[1].includes("youtu.be/")) {
msg.reply("sorry, for discord rules, we can't get mp3 from youtube :c\nbut you can use Invidious or piped!")
break
}
msg.reply(`<#${msg.member.voice.channel.id}>: playing "${shell.exec(`yt-dlp ${args[1]} --print title`,{silent: true}).stdout.replace('\n','')}"`)
shell.exec(`yt-dlp ${args[1]} --output tmp.opus -x --audio-format opus`, {silent: true}) //.stdout.replace('\n','')
resource = VDiscord.createAudioResource(fs.createReadStream("tmp.opus"))
do {
connection.subscribe(player)
player.play(resource)
} while (loop)
break
} msg.reply("you should give url or file, not string!")
break
} else {
flag = true
msg.attachments.forEach(file => {
if (file.contentType == "audio/mpeg" ||
file.contentType == "video/mp4") {
flag = false
msg.reply(`<#${msg.member.voice.channel.id}>: playing "${file.name}"`)
shell.exec(`yt-dlp ${file.url} --output tmp.opus -x`, { silent: true })
resource = VDiscord.createAudioResource(fs.createReadStream("tmp.opus"))
do {
connection.subscribe(player)
player.play(resource)
} while (loop)
}
})
if (flag) msg.reply("you should give url or file!")
break
}
/*case "loop":
if (loop) {loop = false ; msg.reply("loop inactive") }
else { loop = true ; msg.reply("loop active!") }
break*/
default:
msg.channel.send(`discord-shell: ${args[0]}: command not found`)
break
}
} else {
switch (msg.content.toLowerCase()) {
case "<@1051276127760556135>" || "<@!1051276127760556135>":
msg.channel.send(`\`${json.prefix}<command>\``)
break
default:
//console.log(msg.author.id)
break
}
if (msg.author.id != 482321074483101716) {
if (msg.content.toLowerCase().includes("fuck")) {
msg.reply("AYO WTH DUDE, CALM DOWN")
} if (msg.content.toLowerCase().includes("nigga") || msg.content.toLowerCase().includes("negro")) {
msg.reply("WTH DUDE, DON'T BE RACIST!")
}
}
}
})
client.login(json.token)

1250
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

19
package.json Normal file
View File

@ -0,0 +1,19 @@
{
"name": "bot",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"test": "node main.js"
},
"author": "mertoalex",
"license": "ISC",
"dependencies": {
"@discordjs/voice": "^0.14.0",
"discord.js": "^14.7.1",
"ffmpeg-static": "^5.1.0",
"libsodium-wrappers": "^0.7.10",
"opusscript": "^0.0.8",
"shelljs": "^0.8.5"
}
}