Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Discord = require('discord.js');
- const express = require('express');
- const winston = require('winston');
- const path = require('path');
- const url = require('url');
- const request = require('request');
- const fs = require('fs');
- var admin_ids = [
- '289768005448237057'
- ];
- var app = express(); // initialisize express
- app.set('views', path.join(__dirname, 'views'))
- app.set('view engine','pug');
- var entrys = JSON.parse(fs.readFileSync(path.join(__dirname, 'saves/entrys.json'),'utf-8'));
- var lastID = 0;
- // read command list
- const commands = require('./commands'); //TODO: replace with fs
- //gets the http body from url
- function getBodyFromURL(uri, callback){
- request(uri.toString(), (error, response, body)=>{
- if(!error && response.statusCode == 200)
- callback(body);
- else
- callback(null);
- });
- }
- var config = JSON.parse(fs.readFileSync('config.json', 'utf-8')); // load config
- var client = new Discord.Client(); // init discord bot user
- console.log(config);
- var bot_msg = null;
- client.on('ready', ()=>winston.log('info','discord client is ready!'));
- client.on('message',(msg)=>{
- if(msg.author.id == '391255226528563202' && msg.channel.id == '369501028695015444'){
- if(bot_msg != null){
- bot_msg.delete();
- }
- bot_msg = msg;
- }
- if(msg.author.bot) return; // returns if user is bot
- var isMember = false;
- var isAdmin = false;
- for(let i = 0; i < config.cp_ids.length; i++){
- if(msg.author.id == config.cp_ids[i]){
- isAdmin = true;
- break;
- }
- }
- for(let i = 0; i < config.cp_ids.length; i++){
- if(msg.member.roles.get(config.cp_roles[i])){
- isAdmin = true;
- break;
- }
- }
- for(let i = 0; i < config.admin_ids.length; i++){
- if(msg.author.id == config.admin_ids[i]){
- isAdmin = true;
- break;
- }
- }
- if(isMember || isAdmin){
- var api_url = new url.URL('http://127.0.0.1:3000/'); // url for the api
- if(commands.help.regex.test(msg.content)){ // help command
- api_url.pathname = commands.help.pathname; // load pathname from commandlist
- getBodyFromURL(api_url, (embed)=>{ // load body from api command help
- msg.author.sendEmbed(JSON.parse(embed)); // send the embed to discord
- });
- }
- else if(commands.add.regex.test(msg.content)){ // add command
- while(entrys[lastID] != null || entrys[lastID] != undefined){ // go foward if needed
- lastID += 1;
- }
- var text = '';
- for(let i = 0; i < msg.content.length; i++){
- if(msg.content[i] == '"'){
- while(msg.content[++i] != '"' && i < msg.content.length){
- text += msg.content[i];
- }
- }
- }
- if(text){
- entrys.push({
- content: text,
- author: msg.author.tag
- });
- //@ts-ignore
- fs.writeFileSync(path.join(__dirname, 'saves/entrys.json'), JSON.stringify(entrys, null, 4));
- //@ts-ignore
- var outputmsg = '';
- for(let i = 0; i < entrys.length; i++){
- outputmsg+=`**$${i}** *${entrys[i].content}* - ${entrys[i].author}\n`;
- }
- setTimeout(()=>client.channels.get(config.target_channel).send(outputmsg), 500);
- }else{
- var embed = new Discord.RichEmbed()
- .addField(commands.add.command, commands.add.description)
- .setColor(config.embed_color);
- msg.author.sendEmbed(embed);
- }
- msg.delete();
- }else if(commands.start.regex.test(msg.content) && msg.author.id == '289768005448237057'){
- //@ts-ignore
- client.channels.get(config.target_channel).send('Post liste auf: http://134.255.220.72:3000/entrys\nLater visible in this Channel');
- msg.delete();
- }else if(commands.reset.regex.test(msg.content) && msg.author.id == '289768005448237057'){
- entrys = [];
- fs.writeFileSync(path.join(__dirname, 'saves/entrys.json'), '[]');
- var outputmsg = '';
- for(let i = 0; i < entrys.length; i++){
- outputmsg+=`**$${i}** *${entrys[i].content}* - ${entrys[i].author}\n`;
- }
- //@ts-ignore
- setTimeout(()=>client.channels.get(config.target_channel).send(outputmsg), 500);
- msg.delete();
- }else if(commands.roleadd.regex.test(msg.content)&& isAdmin){
- var text = '';
- for(let i = 0; i < msg.content.length; i++){
- if(msg.content[i] == '"'){
- while(msg.content[++i] != '"' && i < msg.content.length){
- text += msg.content[i];
- }
- }
- }
- config.cp_roles.push(text);
- fs.writeFileSync('config.json', JSON.stringify(config, null, 4));
- }else if(commands.useradd.regex.test(msg.content)&& isAdmin){
- var text = '';
- for(let i = 0; i < msg.content.length; i++){
- if(msg.content[i] == '"'){
- while(msg.content[++i] != '"' && i < msg.content.length){
- text += msg.content[i];
- }
- }
- }
- config.cp_ids.push(text);
- fs.writeFileSync('config.json', JSON.stringify(config, null, 4));
- }else if(commands.del.regex.test(msg.content)){
- var text = '';
- for(let i = 0; i < msg.content.length; i++){
- if(msg.content[i] == '"'){
- while(msg.content[++i] != '"' && i < msg.content.length){
- text += msg.content[i];
- }
- }
- }
- if(parseInt(text) < entrys.length && parseInt(text) >= 0)
- entrys.splice(parseInt(text), 1);
- var outputmsg = '';
- for(let i = 0; i < entrys.length; i++){
- outputmsg+=`**$${i}** *${entrys[i].content}* - ${entrys[i].author}\n`;
- }
- //@ts-ignore
- setTimeout(()=>client.channels.get(config.target_channel).send(outputmsg), 500);
- }
- }
- });
- app.get('/api/entrys', (req, res)=>{
- res.send(entrys);
- });
- app.get('/api/ids/users', (req, res)=>{
- res.send(config.cp_ids);
- });
- app.get('/api/ids/user/roles', (req, res)=>{
- res.send(config.cp_roles);
- });
- app.get('/api/ids/admins', (req, res)=>{
- res.send(config.admin_ids);
- });
- app.get('/api/ids/admin/roles', (req, res)=>{
- res.send(config.admin_roles);
- });
- // api entry for help command
- const help = require('./routes/help');
- app.use('/api/help', help);
- const entry_route = require('./routes/entrys');
- app.use('/entrys', entry_route);
- // catch 404 and forward to error handler
- app.use(function (req, res, next) {
- var err = new Error('Not Found');
- //@ts-ignore
- err.status = 404;
- next(err);
- });
- // development error handler
- if (app.get('env') === 'development') {
- app.use(function (err, req, res, next) {
- res.status(err.status || 500);
- res.render('error', {
- content: err.message,
- error: err
- });
- });
- }
- // production error handler
- // no stacktraces leaked to user
- app.use(function (err, req, res, next) {
- res.status(err.status || 500);
- res.render('error', {
- message: err.message,
- error: {}
- });
- });
- app.set('port', process.env.PORT || 3000);
- var server = app.listen(app.get('port'), function () {
- winston.log('info','Express server listening on port ' + server.address().port);
- });
- client.login(config.token);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement