122 lines
5.7 KiB
Python
122 lines
5.7 KiB
Python
import asyncio
|
|
|
|
import discord
|
|
import pymysql
|
|
from discord.ext import commands
|
|
|
|
password = open("../../../../sqlPass.txt", 'r')
|
|
|
|
con = pymysql.connect(host='localhost',
|
|
user='Bot',
|
|
password=f'{password}',
|
|
db='serverIDs',
|
|
charset='utf8mb4',
|
|
cursorclass=pymysql.cursors.DictCursor)
|
|
|
|
|
|
class AddServer(commands.Cog):
|
|
def __init__(self, client):
|
|
self.client = client
|
|
|
|
@commands.Cog.listener()
|
|
async def on_message(self, ctx):
|
|
if isinstance(ctx.channel, discord.DMChannel) and (ctx.content.lower() == "add server"):
|
|
try:
|
|
await ctx.channel.send("Send me an invite to the server. Say ``cancel`` anytime to cancel.")
|
|
invite = await self.client.wait_for("message", check=lambda message: message.author == ctx.author
|
|
and message.channel == ctx.channel,
|
|
timeout=20)
|
|
invite = await self.client.fetch_invite(invite.content)
|
|
if invite == "cancel":
|
|
await ctx.channel.send("Process canceled")
|
|
return
|
|
|
|
categorys = self.client.get_channel(656998225076551680)
|
|
print(categorys.channels)
|
|
category_names = ""
|
|
for channel in categorys.channels:
|
|
category_names = category_names + '`' + channel.name + '` | '
|
|
await ctx.channel.send("Please slect a category from the following. This will change how the server"
|
|
"is shown in the Hub server \n" + category_names)
|
|
category = await self.client.wait_for("message", check=lambda message: message.author == ctx.author
|
|
and message.channel == ctx.channel, timeout=20)
|
|
category = category.content.lower
|
|
if category == "cancel":
|
|
await ctx.channel.send("Process canceled")
|
|
return
|
|
for channel in categorys.channels:
|
|
if category == channel.name:
|
|
pass
|
|
else:
|
|
category = "other"
|
|
|
|
await ctx.channel.send("Please send a list of tags separated by a "
|
|
"comma(,) no spaces")
|
|
tags = await self.client.wait_for("message", check=lambda message: message.author == ctx.author
|
|
and message.channel == ctx.channel,
|
|
timeout=20)
|
|
if tags == "cancel":
|
|
await ctx.channel.send("Process canceled")
|
|
return
|
|
|
|
await ctx.channel.send("Please send a description of the server")
|
|
description = await self.client.wait_for("message", check=lambda message: message.author == ctx.author
|
|
and message.channel == ctx.channel,
|
|
timeout=20)
|
|
if description == "cancel":
|
|
await ctx.channel.send("Process canceled")
|
|
return
|
|
|
|
nsfw = 0
|
|
for channel in invite.guild.channels:
|
|
try:
|
|
if channel.is_nsfw():
|
|
nsfw = 1
|
|
except AttributeError:
|
|
pass
|
|
|
|
|
|
try:
|
|
with con:
|
|
cur = con.cursor()
|
|
cur.execute(f"INSERT INTO servers "
|
|
f"(ID, name, category, tags, description, nsfw, invite, submitter) "
|
|
f"VALUES ({invite.guild.id},'"
|
|
f"{invite.guild.name}','"
|
|
f"{category}','"
|
|
f"{tags.content}','"
|
|
f"{description.content}','"
|
|
f"{nsfw}','"
|
|
f"{invite.code}','"
|
|
f"{ctx.author.id}')")
|
|
await ctx.channel.send("Server added successfully")
|
|
|
|
embed = discord.Embed(
|
|
colour=discord.Colour.green()
|
|
)
|
|
embed.set_author(name="Server Added")
|
|
embed.add_field(name="ID", value=f"{invite.guild.id}", inline=False)
|
|
embed.add_field(name="Name", value=f"{invite.guild.name}", inline=False)
|
|
embed.add_field(name="Tags", value=f"{tags.content}", inline=False)
|
|
embed.add_field(name="Code", value=f"{invite.code}", inline=False)
|
|
embed.add_field(name="Description", value=f"{description.content}", inline=False)
|
|
await self.client.get_channel(658442038475358238).send(embed=embed)
|
|
|
|
except Exception as e:
|
|
await ctx.channel.send("An error has occurred and will be fixed"
|
|
"shortly.")
|
|
print(e)
|
|
await self.client.get_channel(656997125627969546).send(e)
|
|
await self.client. \
|
|
get_channel(656997125627969546). \
|
|
send("<@305589587215122432>")
|
|
|
|
except asyncio.TimeoutError:
|
|
await ctx.channel.send("Process timeout")
|
|
return
|
|
await self.client.process_commands(ctx)
|
|
|
|
|
|
def setup(client):
|
|
client.add_cog(AddServer(client))
|