added add bot

This commit is contained in:
CorwinDev committed 2022-08-02 18:14:51 +02:00
1 parent f788e4de59
commit 2e140d91c1
8 files changed
+403 -28

No files matched your search

+6 -1
View File
@@ -1,6 +1,11 @@
module.exports = {
"mongodb": "mongodb+srv://root:RzIhDff90LKkOOjw@cluster0.jo9hd.mongodb.net/?retryWrites=true&w=majority",
"bot": {
"token": "OTM0MDg3NTIzNjQ5NjA5NzY4.GV-g1-.Eggw57JNtsrLPbakg-_yr8fn8oBAbh0nKfK-lk"
"token": "OTM0MDg3NTIzNjQ5NjA5NzY4.GV-g1-.Eggw57JNtsrLPbakg-_yr8fn8oBAbh0nKfK-lk",
"channels":{
"login": "868065455628234780",
"vote": "937643610541793300",
"error": "1003947531543269507",
}
}
}
+59 -1
View File
@@ -1,5 +1,4 @@
// Load Bot and website
const bot = require('./bot');
const website = require('./website');
// Import config and export
const config = require('./config');
@@ -12,6 +11,65 @@ try {
console.log('Error connecting to mongoDB');
process.exit(1);
}
// Create discord.js client
const { Client, GatewayIntentBits, EmbedBuilder } = require('discord.js');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.GuildPresences,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.GuildMessageReactions,
GatewayIntentBits.GuildMessageTyping,
GatewayIntentBits.DirectMessages,
]
});
client.config = config;
// Set intents
client.on('ready', () => {
console.log('Bot is ready!');
});
// Login
client.login(client.config.bot.token);
// Node Error Handler
process.on('uncaughtException', function (err) {
console.log(err);
console.log('Uncaught Exception');
client.channels.cache.get(client.config.bot.channels.error).send(`Uncaught Exception: ${err}`);
});
// Node Exit Handler
process.on('exit', function (code) {
console.log('About to exit with code:', code);
client.channels.cache.get(client.config.bot.channels.error).send(`About to exit with code: ${code}`);
});
// Node Unhandled Rejection Handler
process.on('unhandledRejection', function (err) {
console.log(err);
console.log('Unhandled Rejection');
client.channels.cache.get(client.config.bot.channels.error).send(`Unhandled Rejection: ${err}`);
});
// Node Warning Handler
process.on('warning', function (warning) {
console.log(warning);
console.log('Warning');
client.channels.cache.get(client.config.bot.channels.error).send(`Warning: ${warning}`);
});
// Node Error Handler
process.on('error', function (err) {
console.log(err);
console.log('Error');
client.channels.cache.get(client.config.bot.channels.error).send(`Error: ${err}`);
});
// Node Disconnect Handler
process.on('disconnect', function (err) {
console.log(err);
console.log('Disconnect');
client.channels.cache.get(client.config.bot.channels.error).send(`Disconnect: ${err}`);
});
//export config
module.exports.config = config;
module.exports.mongoose = mongoose;
module.exports.client = client;
module.exports.embed = EmbedBuilder;
+5 -2
View File
@@ -13,6 +13,7 @@ var showdown = require('showdown'),
var bot = require('./routers/bot');
var admin = require('./routers/admin');
var auth = require('./routers/auth');
var client = require('../index');
passport.serializeUser(function (user, done) {
done(null, user);
});
@@ -30,6 +31,8 @@ app.use(session({
resave: false,
saveUninitialized: false,
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(passport.initialize());
app.use(passport.session());
// set up view engine
@@ -109,6 +112,6 @@ app.get("/sitemap.xml", async function (req, res) {
});
app.listen(port, () => {
console.log('Your app is listening on port ' + port);
});
});
module.exports.client = client;
+258
View File
@@ -589,6 +589,15 @@ video {
.top-0 {
top: 0px;
}
.top-3 {
top: 0.75rem;
}
.z-0 {
z-index: 0;
}
.-z-10 {
z-index: -10;
}
.order-3 {
order: 3;
}
@@ -605,6 +614,10 @@ video {
margin-left: auto;
margin-right: auto;
}
.-mx-3 {
margin-left: -0.75rem;
margin-right: -0.75rem;
}
.mb-2 {
margin-bottom: 0.5rem;
}
@@ -653,6 +666,12 @@ video {
.ml-3 {
margin-left: 0.75rem;
}
.mr-1 {
margin-right: 0.25rem;
}
.-mr-1 {
margin-right: -0.25rem;
}
.block {
display: block;
}
@@ -759,6 +778,9 @@ video {
.w-3\/6 {
width: 50%;
}
.w-56 {
width: 14rem;
}
.max-w-7xl {
max-width: 80rem;
}
@@ -798,6 +820,35 @@ video {
.border-collapse {
border-collapse: collapse;
}
.origin-\[0\] {
transform-origin: 0;
}
.origin-top-right {
transform-origin: top right;
}
.-translate-y-6 {
--tw-translate-y: -1.5rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-0 {
--tw-translate-y: 0px;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-75 {
--tw-scale-x: .75;
--tw-scale-y: .75;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-100 {
--tw-scale-x: 1;
--tw-scale-y: 1;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-95 {
--tw-scale-x: .95;
--tw-scale-y: .95;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform {
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@@ -848,6 +899,9 @@ video {
.content-center {
align-content: center;
}
.content-end {
align-content: flex-end;
}
.content-evenly {
align-content: space-evenly;
}
@@ -872,6 +926,9 @@ video {
.gap-4 {
gap: 1rem;
}
.gap-6 {
gap: 1.5rem;
}
.gap-x-0 {
-moz-column-gap: 0px;
column-gap: 0px;
@@ -884,6 +941,15 @@ video {
margin-right: calc(2rem * var(--tw-space-x-reverse));
margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));
}
.divide-y > :not([hidden]) ~ :not([hidden]) {
--tw-divide-y-reverse: 0;
border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
}
.divide-gray-100 > :not([hidden]) ~ :not([hidden]) {
--tw-divide-opacity: 1;
border-color: rgb(243 244 246 / var(--tw-divide-opacity));
}
.overflow-hidden {
overflow: hidden;
}
@@ -902,6 +968,9 @@ video {
.rounded-xl {
border-radius: 0.75rem;
}
.rounded-md {
border-radius: 0.375rem;
}
.rounded-t-lg {
border-top-left-radius: 0.5rem;
border-top-right-radius: 0.5rem;
@@ -924,6 +993,9 @@ video {
.border-b {
border-bottom-width: 1px;
}
.border-b-2 {
border-bottom-width: 2px;
}
.border-solid {
border-style: solid;
}
@@ -976,6 +1048,10 @@ video {
--tw-border-opacity: 1;
border-color: rgb(239 68 68 / var(--tw-border-opacity));
}
.border-gray-200 {
--tw-border-opacity: 1;
border-color: rgb(229 231 235 / var(--tw-border-opacity));
}
.bg-transparent {
background-color: transparent;
}
@@ -1103,6 +1179,14 @@ video {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.py-2\.5 {
padding-top: 0.625rem;
padding-bottom: 0.625rem;
}
.px-0 {
padding-left: 0px;
padding-right: 0px;
}
.pt-2 {
padding-top: 0.5rem;
}
@@ -1145,6 +1229,9 @@ video {
.pr-5 {
padding-right: 1.25rem;
}
.text-left {
text-align: left;
}
.text-center {
text-align: center;
}
@@ -1196,6 +1283,9 @@ video {
.tracking-tight {
letter-spacing: -0.025em;
}
.tracking-wide {
letter-spacing: 0.025em;
}
.text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
@@ -1255,6 +1345,14 @@ video {
--tw-text-opacity: 1;
color: rgb(96 165 250 / var(--tw-text-opacity));
}
.text-blue-600 {
--tw-text-opacity: 1;
color: rgb(37 99 235 / var(--tw-text-opacity));
}
.text-blue-500 {
--tw-text-opacity: 1;
color: rgb(59 130 246 / var(--tw-text-opacity));
}
.underline {
-webkit-text-decoration-line: underline;
text-decoration-line: underline;
@@ -1267,6 +1365,12 @@ video {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.opacity-0 {
opacity: 0;
}
.opacity-100 {
opacity: 1;
}
.shadow-lg {
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
@@ -1287,6 +1391,11 @@ video {
--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-sm {
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-white {
--tw-shadow-color: #fff;
--tw-shadow: var(--tw-shadow-colored);
@@ -1307,6 +1416,11 @@ video {
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-1 {
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-blue-300 {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
@@ -1314,6 +1428,13 @@ video {
.ring-button-primary {
--tw-ring-color: 5865F2;
}
.ring-black {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity));
}
.ring-opacity-5 {
--tw-ring-opacity: 0.05;
}
.drop-shadow {
--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06));
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
@@ -1340,9 +1461,21 @@ video {
.duration-300 {
transition-duration: 300ms;
}
.duration-100 {
transition-duration: 100ms;
}
.duration-75 {
transition-duration: 75ms;
}
.ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.ease-out {
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.ease-in {
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}
.content-none {
--tw-content: none;
content: var(--tw-content);
@@ -1447,6 +1580,16 @@ body {
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.hover\:bg-blue-800:hover {
--tw-bg-opacity: 1;
background-color: rgb(30 64 175 / var(--tw-bg-opacity));
}
.hover\:bg-gray-50:hover {
--tw-bg-opacity: 1;
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
}
.hover\:text-gray-900:hover {
--tw-text-opacity: 1;
color: rgb(17 24 39 / var(--tw-text-opacity));
@@ -1487,6 +1630,21 @@ body {
border-color: rgb(59 130 246 / var(--tw-border-opacity));
}
.focus\:border-gray-500:focus {
--tw-border-opacity: 1;
border-color: rgb(107 114 128 / var(--tw-border-opacity));
}
.focus\:border-blue-600:focus {
--tw-border-opacity: 1;
border-color: rgb(37 99 235 / var(--tw-border-opacity));
}
.focus\:bg-white:focus {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.focus\:outline-none:focus {
outline: 2px solid transparent;
outline-offset: 2px;
@@ -1504,6 +1662,12 @@ body {
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:ring-0:focus {
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:ring-blue-500:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
@@ -1514,6 +1678,65 @@ body {
--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
}
.focus\:ring-indigo-500:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity));
}
.focus\:ring-offset-2:focus {
--tw-ring-offset-width: 2px;
}
.focus\:ring-offset-gray-100:focus {
--tw-ring-offset-color: #f3f4f6;
}
.peer:-moz-placeholder-shown ~ .peer-placeholder-shown\:translate-y-0 {
--tw-translate-y: 0px;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.peer:placeholder-shown ~ .peer-placeholder-shown\:translate-y-0 {
--tw-translate-y: 0px;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.peer:-moz-placeholder-shown ~ .peer-placeholder-shown\:scale-100 {
--tw-scale-x: 1;
--tw-scale-y: 1;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.peer:placeholder-shown ~ .peer-placeholder-shown\:scale-100 {
--tw-scale-x: 1;
--tw-scale-y: 1;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.peer:focus ~ .peer-focus\:left-0 {
left: 0px;
}
.peer:focus ~ .peer-focus\:-translate-y-6 {
--tw-translate-y: -1.5rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.peer:focus ~ .peer-focus\:scale-75 {
--tw-scale-x: .75;
--tw-scale-y: .75;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.peer:focus ~ .peer-focus\:font-medium {
font-weight: 500;
}
.peer:focus ~ .peer-focus\:text-blue-600 {
--tw-text-opacity: 1;
color: rgb(37 99 235 / var(--tw-text-opacity));
}
@media (prefers-color-scheme: dark) {
.dark\:border-gray-600 {
@@ -1529,6 +1752,11 @@ body {
background-color: 5865F2;
}
.dark\:bg-blue-600 {
--tw-bg-opacity: 1;
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
}
.dark\:text-primary-color {
color: #1E2023;;
}
@@ -1557,6 +1785,11 @@ body {
background-color: 5865F2;
}
.dark\:hover\:bg-blue-700:hover {
--tw-bg-opacity: 1;
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
}
.dark\:hover\:text-white:hover {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
@@ -1585,6 +1818,11 @@ body {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity));
}
.peer:focus ~ .peer-focus\:dark\:text-blue-500 {
--tw-text-opacity: 1;
color: rgb(59 130 246 / var(--tw-text-opacity));
}
}
@media (min-width: 640px) {
@@ -1593,6 +1831,10 @@ body {
display: inline;
}
.sm\:w-auto {
width: auto;
}
.sm\:grid-cols-1 {
grid-template-columns: repeat(1, minmax(0, 1fr));
}
@@ -1600,9 +1842,25 @@ body {
@media (min-width: 768px) {
.md\:mb-0 {
margin-bottom: 0px;
}
.md\:w-1\/2 {
width: 50%;
}
.md\:w-1\/3 {
width: 33.333333%;
}
.md\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.md\:gap-6 {
gap: 1.5rem;
}
}
@media (min-width: 1024px) {
+10 -2
View File
@@ -1,18 +1,26 @@
var express = require('express'),
router = express.Router(),
passport = require('passport');
const client = require('../../../index');
router.get('/', passport.authenticate('discord'));
router.get('/callback', passport.authenticate('discord', {
failureRedirect: '/'
}), function (req, res) {
const embed = new client.embed()
.setTitle('User logged in')
.setDescription(`${req.user.username}#${req.user.discriminator} logged in\nID: ${req.user.id}\nEmail: ${req.user.email}`)
.setColor('#0099ff')
.setTimestamp()
.setThumbnail("https://cdn.discordapp.com/avatars/" + req.user.id + "/" + req.user.avatar + ".png")
.setFooter({ text: 'Logged in', iconURL: "https://cdn.discordapp.com/avatars/" + req.user.id + "/" + req.user.avatar + ".png" });
client.client.channels.cache.get(client.client.config.bot.channels.login).send({ embeds: [embed] });
res.redirect('/');
});
router.get('/logout', function (req, res) {
req.logout(function (err) {
if (err) { return next(err); }
req.session.message = 'You have been logged out';
req.session.destroy();
res.redirect('/');
});
});
+4 -6
View File
@@ -15,15 +15,13 @@ router.get('/add', function (req, res) {
router.post('/add', function (req, res) {
if (req.user) {
console.log(req.body)
var bot = new bots({
id: req.body.id,
name: req.body.name,
avatar: req.body.avatar,
id: req.body.bot_id,
name: req.body.bot_name,
verified: false,
description: req.body.description,
long_description: req.body.bot_description,
owner: req.user.userid,
long_description: req.body.long_description,
banner: req.body.banner,
});
bot.save(function (err) {
if (err) {
+21 -1
View File
@@ -1,2 +1,22 @@
<!-- add bots for the website -->
<%- include('../includes/header.ejs', {title: 'Add Bot'}) %>
<%- include('../includes/header.ejs', {title: 'Add Bot'}) %>
<!-- create form -->
<div class="container-sm p-10">
<form method="post" action="">
<div class="grid md:grid-cols-2 md:gap-6">
<div class="relative z-0 mb-6 w-full group">
<input type="text" name="bot_name" id="bot_name" class="block py-2.5 px-0 w-full text-sm text-gray-900 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" " required />
<label for="bot_name" class="peer-focus:font-medium absolute text-sm text-white dark:text-white duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:left-0 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Bot Name</label>
</div>
<div class="relative z-0 mb-6 w-full group">
<input type="text" name="bot_id" id="floating_last_name" class="block py-2.5 px-0 w-full text-sm text-gray-900 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" " required />
<label for="floating_last_name" class="peer-focus:font-medium absolute text-sm text-white dark:text-white duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:left-0 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Bot ID</label>
</div>
</div>
<div class="relative z-0 mb-6 w-full group">
<textarea type="text" name="bot_description" id="bot_name" class="block py-2.5 px-0 w-full text-sm text-gray-900 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" " required rows="5"></textarea>
<label for="bot_name" class="peer-focus:font-medium absolute text-sm text-white dark:text-white duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:left-0 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Bot Description</label>
</div>
<button type="submit" class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">Submit</button>
</form>
</div>
+40 -15
View File
@@ -18,13 +18,14 @@
<body class="bg-primary-color">
<div class="p-2 pl-5 pr-5 bg-blue-color">
<!-- navbar in tailwind with login buttons -->
<nav class="flex items-center flex-wrap p-6 bg-blue-color">
<nav class="flex flex-wrap p-6 bg-blue-color">
<div class="flex items-center flex-shrink-0 text-white mr-6">
<!-- logo -->
<a href="/">
<img class="mx-auto w-auto h-8" src="/img/logo.png" alt="logo">
</a>
<span class="font-semibold text-xl tracking-tight">&nbsp;BotsCord</span>
<a href="/" class="font-semibold text-xl tracking-tight">&nbsp;BotsCord</a>
</div>
<button data-collapse-toggle="navbar-solid-bg" type="button" class="inline-flex justify-end items-end ml-3 text-gray-400 rounded-lg lg:hidden hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-blue-300 dark:text-gray-400 dark:hover:text-white dark:focus:ring-gray-500" aria-controls="navbar-solid-bg" aria-expanded="false" id="trigger">
<span class="sr-only">Open main menu</span>
@@ -32,26 +33,50 @@
<path fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" clip-rule="evenodd"></path>
</svg>
</button>
<div class="w-full hidden lg:block flex-grow lg:items-center lg:w-auto" id="navbar-solid-bg">
<div class="w-full hidden lg:block flex-grow lg:items-center lg:w-auto content-center items-center" id="navbar-solid-bg">
<div class="flex">
<div class="text-sm lg:flex-grow">
<a href="/bots" class="block lg:inline-block lg:mt-0 text-white hover:text-white mr-4">
<a href="/bots" class="block lg:inline-block lg:mt-0 text-white hover:text-white mr-4 text-lg">
<li class="fad fa-robot mr-1"></li>
Bots
</a>
<a href="/servers" class="block lg:inline-block lg:mt-0 text-white hover:text-white mr-4">
<a href="/servers" class="block lg:inline-block lg:mt-0 text-white hover:text-white mr-4 text-lg">
<li class="fad fa-server mr-1"></li>
Servers
</a>
<div class="relative inline-block text-left">
<div>
<button type="button" class="block lg:inline-block lg:mt-0 text-white hover:text-white mr-4 text-lg" id="menu-button" aria-expanded="true" aria-haspopup="true">
More
</button>
</div>
<div class="hidden origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 divide-y divide-gray-100 focus:outline-none" role="menu" aria-orientation="vertical" aria-labelledby="menu-button" tabindex="-1">
<div class="py-1" role="none">
<!-- Active: "bg-gray-100 text-gray-900", Not Active: "text-gray-700" -->
<a href="#" class="text-gray-700 block px-4 py-2 text-sm" role="menuitem" tabindex="-1" id="menu-item-0">Edit</a>
<a href="#" class="text-gray-700 block px-4 py-2 text-sm" role="menuitem" tabindex="-1" id="menu-item-1">Duplicate</a>
</div>
<div class="py-1" role="none">
<a href="#" class="text-gray-700 block px-4 py-2 text-sm" role="menuitem" tabindex="-1" id="menu-item-2">Archive</a>
<a href="#" class="text-gray-700 block px-4 py-2 text-sm" role="menuitem" tabindex="-1" id="menu-item-3">Move</a>
</div>
<div class="py-1" role="none">
<a href="#" class="text-gray-700 block px-4 py-2 text-sm" role="menuitem" tabindex="-1" id="menu-item-4">Share</a>
<a href="#" class="text-gray-700 block px-4 py-2 text-sm" role="menuitem" tabindex="-1" id="menu-item-5">Add to favorites</a>
</div>
<div class="py-1" role="none">
<a href="#" class="text-gray-700 block px-4 py-2 text-sm" role="menuitem" tabindex="-1" id="menu-item-6">Delete</a>
</div>
</div>
</div>
<!-- dropdown menu with tailwindcss -->
</div>
<div>
<% if (typeof user == "undefined") { %>
<a href="/auth" class="inline-block text-sm px-4 py-2 leading-none border rounded text-white border-white hover:border-transparent hover:text-blue-color hover:bg-white mt-4 lg:mt-0">Login</a>
<% }else { %>
<a href="/profile" class="inline-block text-sm px-4 py-2 leading-none border rounded text-white border-white hover:border-transparent hover:text-blue-color hover:bg-white mt-4 lg:mt-0">Profile</a>
<a href="/auth/logout" class="inline-block text-sm px-4 py-2 leading-none border rounded text-white border-red-500 hover:border-transparent hover:text-blue-color hover:bg-white mt-4 lg:mt-0">Logout</a>
<% } %>
</div>
<% if (typeof user == "undefined") { %>
<a href="/auth" class="inline-block text-sm px-4 py-2 leading-none border rounded text-white border-white hover:border-transparent hover:text-blue-color hover:bg-white mt-4 lg:mt-0">Login</a>
<% }else { %>
<a href="/profile" class="inline-block text-sm px-4 py-2 leading-none border rounded text-white border-white hover:border-transparent hover:text-blue-color hover:bg-white mt-4 lg:mt-0">Profile</a>
<a href="/auth/logout" class="inline-block text-sm px-4 py-2 leading-none border rounded text-white border-red-500 hover:border-transparent hover:text-blue-color hover:bg-white mt-4 lg:mt-0">Logout</a>
<% } %>
</div>
</div>
</nav>