diff --git a/dislocker_slash.py b/dislocker_slash.py new file mode 100644 index 0000000..996c9b5 --- /dev/null +++ b/dislocker_slash.py @@ -0,0 +1,142 @@ +import discord +import os +import json +import psycopg2 +import datetime +import asyncio + +class DL(): + def __init__(self): + self.config_dir_path = "./config/" + self.export_dir_path = "./export/" + self.log_dir_path = "./log/" + self.server_config_path = self.config_dir_path + "server.json" + self.onetime_config_path = self.config_dir_path + "onetime.json" + self.log_path = self.log_dir_path + "dislocker.txt" + try: + if not os.path.isdir(self.config_dir_path): + print("config ディレクトリが見つかりません... 作成します。") + os.mkdir(self.config_dir_path) + + if not os.path.isfile(self.server_config_path): + print("config ファイルが見つかりません... 作成します。") + self.server_config = { + "db": { + "host": "localhost", + "port": "5432", + "db_name": "dislocker", + "username": "user", + "password": "password" + }, + "bot": { + "token": "TYPE HERE BOTS TOKEN KEY", + "activity": { + "name": "Dislocker", + "details": "ロック中...", + "type": "playing", + "state": "ロック中..." + }, + "log_channel_id" : "TYPE HERE CHANNEL ID (YOU MUST USE INT !!!!)", + "config_channel_id": "TYPE HERE CHANNEL ID (YOU MUST USE INT !!!!)", + "config_public_channel_id": "TYPE HERE CHANNEL ID (YOU MUST USE INT !!!!)", + "monitor": { + "search_frequency": 1, + "allowable_time": 180, + "fstop_time": "21:00:00" + }, + "preset_games": ["TEST1", "TEST2", "TEST3", "TEST4", "TEST5"], + "admin_user_id": "TYPE HERE CHANNEL ID (YOU MUST USE INT !!!!)", + "debug": False + } + } + + with open(self.server_config_path, "w", encoding="utf-8") as w: + json.dump(self.server_config, w, indent=4, ensure_ascii=False) + + + elif os.path.isfile(self.server_config_path): + with open(self.server_config_path, "r", encoding="utf-8") as r: + self.server_config = json.load(r) + print("config ファイルを読み込みました。") + + + if not os.path.isdir(self.export_dir_path): + print("export ディレクトリが見つかりません... 作成します。") + os.mkdir(self.export_dir_path) + + if not os.path.isdir(self.log_dir_path): + print("log ディレクトリが見つかりません... 作成します。") + os.mkdir(self.log_dir_path) + + + self.init_result = "ok" + + except (Exception) as error: + print("初回処理でエラーが発生しました。\nエラー内容\n" + str(error)) + self.init_result = "error" + + finally: + pass + + def log(self, **kwargs): + if self.debug == True: + flag = 1 + else: + if "flag" in kwargs: + if kwargs["flag"] == 1: + flag = 1 + else: + flag = 0 + else: + flag = 0 + + if flag == 1: + title = str(kwargs["title"]) + if "message" in kwargs: + message = str(kwargs["message"]) + else: + message = None + + current_datetime = str(datetime.now()) + + if message == None: + detail = f"{current_datetime} | {title}\n" + else: + detail = f"{current_datetime} | {title}\n{message}\n" + + print(detail) + + if os.path.isfile(self.log_path): + try: + with open(self.log_path, "a", encoding="utf-8") as a: + a.write(detail) + except: + print("LOGGING ERROR mode a") + else: + try: + with open(self.log_path, "w", encoding="utf-8") as w: + w.write(detail) + except: + print("LOGGING ERROR mode w") + +intents = discord.Intents.default() +intents.message_content = True + +client = discord.Client(intents=intents) +tree = discord.app_commands.CommandTree(client) + +@client.event +async def on_ready(): + print("Bot is ready.") + print("Logged in as") + print(client.user.name) + print(client.user.id) + print("------") + await tree.sync() + +@tree.command(name="use", description="パソコンの使用登録をします。") +async def use(interaction: discord.Interaction): + await interaction.response.send_message("パソコンの使用登録をします。", ephemeral=True) + +dislocker = DL() +client.run(dislocker.server_config["bot"]["token"]) \ No newline at end of file