parent
657c52945f
commit
ba5d5b0f80
@ -0,0 +1,52 @@
|
||||
const GuildM = require('../models/guilds');
|
||||
|
||||
|
||||
exports.hasRem = (io)=>
|
||||
{
|
||||
return(req,res)=>
|
||||
{
|
||||
GuildM.find({gID:req.body.guildID})
|
||||
.then(
|
||||
(guild,err)=>
|
||||
{
|
||||
if(err || guild.length==0) return res.json({hasRem:false})
|
||||
return res.json({hasRem:true})
|
||||
}
|
||||
)
|
||||
}
|
||||
};
|
||||
|
||||
exports.guildData = (io)=>
|
||||
{
|
||||
return (req, res)=>
|
||||
{
|
||||
GuildM.find({gID:req.body.guildID})
|
||||
.then(
|
||||
(guild,err)=>
|
||||
{
|
||||
if(err || guild.length==0) return res.json(null)
|
||||
return res.json(guild[0])
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
exports.updateGuild = (io)=>
|
||||
{
|
||||
return (req, res)=>
|
||||
{
|
||||
|
||||
GuildM.findOne({gID:req.body.guildID})
|
||||
.then(
|
||||
(guild, err)=>
|
||||
{
|
||||
if(err || guild.length) return res.json({Error:'No guild'});
|
||||
|
||||
guild[`${req.body.property}`] =! guild[`${req.body.property}`];
|
||||
GuildM.updateOne({gID:req.body.guildID}, guild).then(()=>
|
||||
{
|
||||
return res.json(guild);
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
exports.get = (io)=>
|
||||
{
|
||||
return(req,res)=>
|
||||
{
|
||||
res.render('addtodiscord')
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
exports.get = (io)=>
|
||||
{
|
||||
return(req,res)=>
|
||||
{
|
||||
res.render('dashboard')
|
||||
}
|
||||
}
|
||||
exports.post = (io)=>
|
||||
{
|
||||
return(req,res)=>
|
||||
{
|
||||
//change Shit on db
|
||||
res.render('home')
|
||||
}
|
||||
}
|
@ -1,103 +0,0 @@
|
||||
|
||||
@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@1,900&display=swap');
|
||||
|
||||
body
|
||||
{
|
||||
margin:0;
|
||||
background-image: url("../images/wallhaven-650953.png");
|
||||
height:100%;
|
||||
width:100%;
|
||||
position:absolute;
|
||||
top:0%;
|
||||
left:0%;
|
||||
background-repeat: no-repeat;
|
||||
background-attachment: fixed;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.Footer
|
||||
{
|
||||
font-family:Verdana, sans-serif;
|
||||
color:rgb(14, 19, 19);
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
button
|
||||
{
|
||||
display:inline-block;
|
||||
padding:0%;
|
||||
margin:0;
|
||||
height:10%;
|
||||
width:30%;
|
||||
}
|
||||
.Discordbtn
|
||||
{
|
||||
position:static;
|
||||
}
|
||||
.DiscordAddBtn
|
||||
{
|
||||
height: 70%;
|
||||
width:70%;
|
||||
|
||||
}
|
||||
.githublogo
|
||||
{
|
||||
height:5%;
|
||||
width:5%;
|
||||
}
|
||||
.github
|
||||
{
|
||||
display:inline-block;
|
||||
padding:3%;
|
||||
font-family:Verdana, sans-serif;
|
||||
font-size:100%;
|
||||
font-weight:bolder;
|
||||
color:black;
|
||||
text-align: center;
|
||||
}
|
||||
h1
|
||||
{
|
||||
display:block;
|
||||
padding-bottom: 30%;
|
||||
color:rgb(0, 183, 255);
|
||||
font-size: 50px;
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-weight: bolder;
|
||||
text-align: center;
|
||||
}
|
||||
a,
|
||||
a:link,
|
||||
a:visited,
|
||||
a:hover,
|
||||
a:active
|
||||
{
|
||||
text-decoration: none;
|
||||
color:black;
|
||||
}
|
||||
.center
|
||||
{
|
||||
text-align: center;
|
||||
margin: auto;
|
||||
width: 50%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
|
||||
.verticalCenter
|
||||
{
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
-ms-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
.container
|
||||
{
|
||||
height: 100%;
|
||||
position: relative;
|
||||
|
||||
}
|
@ -0,0 +1,122 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@1,900&display=swap');
|
||||
|
||||
body
|
||||
{
|
||||
display: flex;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background-color: #071c24;
|
||||
}
|
||||
#userWrapper
|
||||
{
|
||||
position: absolute;
|
||||
top:3vh;
|
||||
left:50%;
|
||||
transform: translateX(-50%);
|
||||
height: 15vh;
|
||||
width: 80%;
|
||||
}
|
||||
#avatar
|
||||
{
|
||||
background-color: ivory;
|
||||
height: 10vh;
|
||||
width: 10vh;
|
||||
background-size: 10vh 10vh;
|
||||
position: relative;
|
||||
top:2vh;
|
||||
left: 10%;
|
||||
}
|
||||
#userName
|
||||
{
|
||||
position: relative;
|
||||
left: 50%;
|
||||
top:-25%;
|
||||
font-size: larger;
|
||||
font-family: 'Lato';
|
||||
font-weight: bolder;
|
||||
color: rgb(15, 98, 131);
|
||||
}
|
||||
#guilds
|
||||
{
|
||||
position: relative;
|
||||
top:20vh;
|
||||
background-color: rgba(210, 252, 253, 0.541);
|
||||
width: 80%;
|
||||
height: 70%;
|
||||
font-family: 'Lato';
|
||||
font-weight: bolder;
|
||||
text-align: center;
|
||||
border-radius: 2%;
|
||||
border: 2px solid #020608;
|
||||
}
|
||||
.DiscordAddBtn
|
||||
{
|
||||
position: relative;
|
||||
transform: translateY(calc(50% - 1vh));
|
||||
left:calc(50% - 6vw);
|
||||
height: 2vh;
|
||||
width:9vw;
|
||||
background-image: url("../images/add-to-discord.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 9vw 2vh;
|
||||
cursor:pointer;
|
||||
|
||||
|
||||
}
|
||||
.material-symbols-outlined
|
||||
{
|
||||
cursor: pointer;
|
||||
}
|
||||
.popup .material-symbols-outlined
|
||||
{
|
||||
position: relative;
|
||||
top:-0.1em;
|
||||
right:1vh;
|
||||
float:right;
|
||||
}
|
||||
.popup
|
||||
{
|
||||
position: absolute;
|
||||
top:50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
height: 30%;
|
||||
width: 50%;
|
||||
background-color: rgba(210, 252, 253, 0.541);
|
||||
border-radius: 1%;
|
||||
border: 2px solid #020608;
|
||||
z-index: 10;
|
||||
text-align: center;
|
||||
}
|
||||
h1
|
||||
{
|
||||
font-family: 'Lato';
|
||||
position: relative;
|
||||
top: -50%;
|
||||
}
|
||||
h3
|
||||
{
|
||||
font-family: 'Lato';
|
||||
}
|
||||
p
|
||||
{
|
||||
font-family: 'Lato';
|
||||
padding-top: 1vh;
|
||||
padding-bottom: 1vh;
|
||||
}
|
||||
p:nth-child(even)
|
||||
{
|
||||
background-color: #071c2498;
|
||||
}
|
||||
.hidden
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
#close_bt
|
||||
{
|
||||
position: relative;
|
||||
top:1vh;
|
||||
right:1vh;
|
||||
}
|
@ -0,0 +1,145 @@
|
||||
var userID;
|
||||
window.onload = async () =>
|
||||
{
|
||||
const fragment = new URLSearchParams(window.location.hash.slice(1));
|
||||
const [accessToken, tokenType] = [fragment.get('access_token'), fragment.get('token_type')];
|
||||
var guilds;
|
||||
const avatar = document.getElementById('avatar');
|
||||
const userName = document.getElementById('userName');
|
||||
var table = document.getElementById('guilds')
|
||||
|
||||
if (!accessToken) return window.location.href = '/';
|
||||
fetch('https://discord.com/api/users/@me',
|
||||
{
|
||||
headers: {
|
||||
authorization: `${tokenType} ${accessToken}`,
|
||||
},
|
||||
})
|
||||
.then(result => result.json())
|
||||
.then(response =>
|
||||
{
|
||||
userID = response.id;
|
||||
avatar.style.backgroundImage = `url(https://cdn.discordapp.com/avatars/${response.id}/${response.avatar}.jpeg)`
|
||||
userName.textContent = response.username
|
||||
})
|
||||
.catch(console.error);
|
||||
fetch('https://discord.com/api/users/@me/guilds',
|
||||
{
|
||||
headers: {
|
||||
authorization: `${tokenType} ${accessToken}`,
|
||||
},
|
||||
})
|
||||
.then(result => result.json())
|
||||
.then(response =>
|
||||
{
|
||||
guilds = response.filter(x=>x.owner==true);
|
||||
for(var guild of guilds)
|
||||
{
|
||||
(async (guild)=>
|
||||
{
|
||||
var row = document.createElement('tr');
|
||||
var name = document.createElement('td');
|
||||
name.textContent = guild.name;
|
||||
var settings = document.createElement('td');
|
||||
settings.id = guild.id;
|
||||
var gear = document.createElement('span');
|
||||
gear.classList.add('material-symbols-outlined')
|
||||
gear.onclick = handleSettigns
|
||||
gear.textContent = 'settings';
|
||||
row.appendChild(name);
|
||||
var addRemData = document.createElement('td');
|
||||
if(!await hasRem(guild.id))
|
||||
{
|
||||
var button = document.createElement('div');
|
||||
button.classList.add('DiscordAddBtn');
|
||||
addRemData.appendChild(button);
|
||||
}
|
||||
row.appendChild(addRemData);
|
||||
settings.appendChild(gear);
|
||||
row.appendChild(settings);
|
||||
table.appendChild(row)
|
||||
})(guild)
|
||||
}
|
||||
|
||||
})
|
||||
.catch(console.error);
|
||||
|
||||
};
|
||||
|
||||
function handleSettigns(event)
|
||||
{
|
||||
var guildID = event.target.parentNode.id;
|
||||
var guildName = event.target.parentNode.parentNode.childNodes[0].textContent;
|
||||
var popup = document.getElementById('popup');
|
||||
const data = {guildID}
|
||||
fetch(`${window.location.origin}/api/getGuildData`,
|
||||
{
|
||||
method: "POST",
|
||||
mode: "cors",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(data), // body data type must match "Content-Type" header
|
||||
})
|
||||
.then(result => result.json())
|
||||
.then(res =>
|
||||
{
|
||||
popup.classList.remove('hidden');
|
||||
popup.children[1].textContent = guildName;
|
||||
popup.children[1].id = guildID;
|
||||
let music = document.getElementById('music')
|
||||
music.textContent = res.music? 'check_box' :'check_box_outline_blank';
|
||||
let strikes = document.getElementById('strikes')
|
||||
strikes.textContent = res.strikes? 'check_box' :'check_box_outline_blank';
|
||||
music.onclick = requestChange;
|
||||
strikes.onclick = requestChange;
|
||||
|
||||
|
||||
})
|
||||
.catch(console.error);
|
||||
}
|
||||
async function hasRem(guildID)
|
||||
{
|
||||
return await fetch(`${window.location.origin}/api/hasRem`,
|
||||
{
|
||||
method: "POST",
|
||||
mode: "cors",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({guildID}), // body data type must match "Content-Type" header
|
||||
})
|
||||
.then(result => result.json())
|
||||
.then(res =>
|
||||
{
|
||||
return res.hasRem;
|
||||
})
|
||||
.catch(console.error);
|
||||
}
|
||||
|
||||
function handleClose(element)
|
||||
{
|
||||
element.parentNode.classList.add('hidden');
|
||||
}
|
||||
async function requestChange()
|
||||
{
|
||||
|
||||
return await fetch(`${window.location.origin}/api/change`,
|
||||
{
|
||||
method: "POST",
|
||||
mode: "cors",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({guildID:event.target.parentNode.parentNode.children[1].id,userID, property:event.target.id}), // body data type must match "Content-Type" header
|
||||
})
|
||||
.then(result => result.json())
|
||||
.then(res =>
|
||||
{
|
||||
let music = document.getElementById('music')
|
||||
music.textContent = res.music? 'check_box' :'check_box_outline_blank';
|
||||
let strikes = document.getElementById('strikes')
|
||||
strikes.textContent = res.strikes? 'check_box' :'check_box_outline_blank';
|
||||
})
|
||||
.catch(console.error);
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
window.onload = function ()
|
||||
{
|
||||
document.querySelector('input#password').addEventListener('input', validatePassword);
|
||||
document.querySelector('button#toggle-password').addEventListener('click', togglePassword);
|
||||
}
|
||||
|
||||
function togglePassword()
|
||||
{
|
||||
const passwordInput = document.querySelector('input#password');
|
||||
const togglePasswordButton = document.querySelector('button#toggle-password');
|
||||
if (passwordInput.type === 'password') {
|
||||
passwordInput.type = 'text';
|
||||
togglePasswordButton.textContent = 'visibility_off';
|
||||
togglePasswordButton.setAttribute('aria-label',
|
||||
'Hide password.');
|
||||
} else {
|
||||
passwordInput.type = 'password';
|
||||
togglePasswordButton.textContent = 'visibility';
|
||||
togglePasswordButton.setAttribute('aria-label',
|
||||
'Show password as plain text. ' +
|
||||
'Warning: this will display your password on the screen.');
|
||||
}
|
||||
}
|
||||
function validatePassword()
|
||||
{
|
||||
const passwordInput = document.querySelector('input#password');
|
||||
let message= '';
|
||||
if (!/.{8,}/.test(passwordInput.value)) {
|
||||
message = 'At least eight characters. ';
|
||||
}
|
||||
if (!/.*[A-Z].*/.test(passwordInput.value)) {
|
||||
message += '\nAt least one uppercase letter. ';
|
||||
}
|
||||
if (!/.*[a-z].*/.test(passwordInput.value)) {
|
||||
message += '\nAt least one lowercase letter.';
|
||||
}
|
||||
passwordInput.setCustomValidity(message);
|
||||
}
|
@ -1,7 +1,14 @@
|
||||
const router = require('express').Router();
|
||||
const homeController = require('../controller/home.js');
|
||||
const dash = require('../controller/dashboard.js');
|
||||
const api = require('../controller/api.js');
|
||||
module.exports = (io)=>
|
||||
{
|
||||
router.route('/').get(homeController.home(io))
|
||||
router.route('/').get(homeController.home(io));
|
||||
router.route('/api/hasRem').post(api.hasRem(io));
|
||||
router.route('/api/getGuildData/').post(api.guildData(io));
|
||||
router.route('/api/Change/').post(api.updateGuild(io));
|
||||
router.route('/dashboard').get(dash.get(io))
|
||||
.post(dash.post(io));
|
||||
return router;
|
||||
};
|
@ -1,40 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>
|
||||
<meta name="generator" content="2018.1.0.386"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<link rel="shortcut icon" href="images/favicon.ico"/>
|
||||
<title>Rem-chan at your service</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/addtodiscord.css" id="pagesheet"/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="Container center verticalCenter">
|
||||
<h1 >Rem-chan</h1>
|
||||
<div class="DiscordBtn">
|
||||
<a class="a" target="_blank" href='https://discord.com/api/oauth2/authorize?client_id=356104008366030863&permissions=8&scope=bot'>
|
||||
<img class="DiscordAddBtn" alt="DiscordAddButton" src="./images/add-to-discord.png">
|
||||
</a>
|
||||
</div>
|
||||
<div class="github">
|
||||
<a target="_blank" class="githubbtn" href="https://github.com/masterhc/Discord-Bot">
|
||||
<img class="githublogo" style="vertical-align:middle" alt="github logo" src="images/github.png">
|
||||
<span style="vertical-align:middle"></span>GitHub</span>
|
||||
</a>
|
||||
</div>
|
||||
<h3>
|
||||
Rem themed discord bot. Everything you want in a bot, with a weabo twist.
|
||||
</h3>
|
||||
<div class="githubbtn">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="Footer">
|
||||
<p>Todos os direitos de autor pertencem aos autores de cada parte de codigo que lhe corresponde.</p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<link rel="shortcut icon" href="images/favicon.ico"/>
|
||||
<title>Rem-chan at your service</title>
|
||||
<script src="js/dashboard.js"></script>
|
||||
<link rel="scr" type="text/js" href="js/dashboard.js"/>
|
||||
<link rel="stylesheet" type="text/css" href="/css/dashboard.css" id="pagesheet"/>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0" />
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
</body>
|
||||
<div id="userWrapper">
|
||||
<div id="avatar"></div>
|
||||
<h1><span id="userName">USERNAME</span></h1>
|
||||
</div>
|
||||
<table id="guilds">
|
||||
<tr>
|
||||
<th>Guild</th>
|
||||
<th>Has Rem?</th>
|
||||
<th>Configure</th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="popup hidden" id= 'popup'>
|
||||
<i onclick="handleClose(this)" class="close material-symbols-outlined" id="close_bt">
|
||||
cancel
|
||||
</i>
|
||||
<h3 id="guild">PLACEHOLDER</h3>
|
||||
<p>Activate Music:
|
||||
<span class="material-symbols-outlined" id="music">check_box_outline_blank</span></p>
|
||||
|
||||
<p>Activate Strikes:
|
||||
<span class="material-symbols-outlined" id="strikes">check_box_outline_blank </span>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
Loading…
Reference in new issue