Skip to content

Instantly share code, notes, and snippets.

@tomatosoupcan
Created May 27, 2020 05:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomatosoupcan/c37b74d9380b5478f9b4a77b3f7becee to your computer and use it in GitHub Desktop.
Save tomatosoupcan/c37b74d9380b5478f9b4a77b3f7becee to your computer and use it in GitHub Desktop.
Changes to Discord Bot for TTT
const Discord = require('discord.js');
const config = require('./config.json');
const {log,error} = console;
const http = require('http');
const fs = require('fs');
const PORT = config.server.port; //unused port and since now the OFFICIAL ttt_discord_bot port ;)
var guild, channel, channel2;
var muted = {};
var get = [];
var prompt = require('prompt');
//create discord client
const client = new Discord.Client();
client.login(config.discord.token);
client.on('ready', () => {
log('Bot is ready to mute them all! :)');
guild = client.guilds.get(config.discord.guild);
// guild = client.guilds.find('id',config.discord.guild);
channel = guild.channels.get(config.discord.channel);
// channel = guild.channels.find('id',config.discord.channel);
channel2 = guild.channels.get(config.discord.channel2);
});
log(channel)
log(channel2)
client.on('voiceStateUpdate',(oldMember,newMember) => {//player leaves the ttt-channel
if (oldMember.voiceChannel != newMember.voiceChannel && isMemberInVoiceChannel(oldMember)) {
if (isMemberMutedByBot(newMember) && newMember.serverMute) newMember.setMute(false).then(()=>{
setMemberMutedByBot(newMember,false);
});
}
});
isMemberInVoiceChannel = (member) => member.voiceChannelID == config.discord.channel;
isMemberMutedByBot = (member) => muted[member] == true;
setMemberMutedByBot = (member,set=true) => muted[member] = set;
get['connect'] = (params,ret) => {
let tag_utf8 = params.tag.split(" ");
let tag = "";
tag_utf8.forEach(function(e) {
tag = tag+e
});
log(tag);
let found = guild.members.filterArray(val => val.user.tag.match(new RegExp('.*'+tag+'.*')));
if (found.length > 1) {
ret({
answer: 1 //pls specify
});
}else if (found.length < 1) {
ret({
answer: 0 //no found
});
}else {
ret({
tag: found[0].user.tag,
id: found[0].id
});
}
};
get['mute'] = (params,ret) => {
let id = params.id;
let mute = params.mute
if (typeof id !== 'string' || typeof mute !== 'boolean') {
ret();
return;
}
log("Muted: " + id);
//let member = guild.members.find('id', id);
let member = guild.members.find(user => user.id === id);
if (member) {
member.setVoiceChannel(channel2);
if (1 == 1) {
if (!(member.voiceChannel == channel2) && mute) {
member.setVoiceChannel(channel2,"dead players can't talk!").then(()=>{
setMemberMutedByBot(member);
ret({
success: true
});
}).catch((err)=>{
ret({
success: false,
error: err
});
});
}
if ((member.voiceChannel == channel2) && !mute) {
member.setVoiceChannel(channel).then(()=>{
setMemberMutedByBot(member,false);
ret({
success: true
});
}).catch((err)=>{
ret({
success: false,
error: err
});
});
}
}
else {
ret();
}
}else {
ret({
success: false,
err: 'member not found!' //TODO lua: remove from ids table + file
});
}
}
http.createServer((req,res)=>{
if (typeof req.headers.params === 'string' && typeof req.headers.req === 'string' && typeof get[req.headers.req] === 'function') {
try {
let params = JSON.parse(req.headers.params);
get[req.headers.req](params,(ret)=>res.end(JSON.stringify(ret)));
}catch(e) {
res.end('no valid JSON in params');
}
}else
res.end();
}).listen({
port: PORT
},()=>{
log('http interface is ready :)')
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment