DiscordWhitelist/autowl/Cogs/Whitelist.py

54 lines
2.3 KiB
Python
Raw Normal View History

import discord
import logging
import mysql.connector
from autowl import config
from autowl.bot import Bot
from discord.ext import commands
from discord import app_commands
log = logging.getLogger(__name__)
class Whitelist(commands.Cog):
def __init__(self, client: Bot):
self.client = client
@app_commands.command()
async def link(self, interaction: discord.Interaction, steam64: str):
2023-08-01 21:17:23 -05:00
self.client.squadjs.connect()
if not interaction.guild:
await interaction.response.send_message(
"This command must be ran within a discord server!"
)
return
2023-08-01 21:17:23 -05:00
updatecur = self.client.squadjs.cursor(buffered=True)
try:
2023-04-17 22:11:05 -05:00
updatecur.execute(self.client.squadjs_updateDiscordID, (interaction.user.id, steam64))
rowsaffected = updatecur.rowcount
2023-04-17 21:40:13 -05:00
if rowsaffected <= 0:
2023-04-17 22:30:18 -05:00
updatecur.execute(self.client.squadjs_findByDiscordID, [interaction.user.id])
if updatecur.rowcount <= 0:
await interaction.response.send_message("Cound not find SteamID!")
else:
for urole in interaction.user.roles:
if urole.id in self.client.whitelistGrps.keys():
self.client.whitelistGrps[urole.id].members[f"{interaction.user.id}"].steam64 = steam64
self.client.whitelistGrps[urole.id].updateGroup()
await interaction.response.send_message("SteamID already linked, roles updated.")
2023-08-01 21:17:23 -05:00
self.client.squadjs.commit()
2023-04-17 21:36:32 -05:00
return
except mysql.connector.Error as err:
log.error("MYSQL error!")
2023-04-17 21:36:32 -05:00
await interaction.response.send_message("There was an internal server error, pls contact skillet")
2023-04-17 21:24:22 -05:00
return
for urole in interaction.user.roles:
if urole.id in self.client.whitelistGrps.keys():
2023-04-17 21:18:38 -05:00
disusername = interaction.user.nick if interaction.user.nick is not None else interaction.user.name
self.client.whitelistGrps[urole.id].addMember(config.WhitelistMember(interaction.user.id, disusername, steam64))
2023-08-01 21:17:23 -05:00
self.client.squadjs.commit()
self.client.squadjs.close()
2023-04-18 00:07:24 -05:00
await interaction.response.send_message(f"discord is linked to steamID, roles updated.")