From e0e4ac73bbf4efb1052a407ed35276624e15ffc1 Mon Sep 17 00:00:00 2001 From: suti7yk5032 Date: Tue, 4 Jun 2024 22:53:31 +0900 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E5=BF=9C=E5=8B=95=E3=81=8F=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dislocker.py | 94 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 73 insertions(+), 21 deletions(-) diff --git a/dislocker.py b/dislocker.py index a394189..2f1f4c4 100644 --- a/dislocker.py +++ b/dislocker.py @@ -2,26 +2,9 @@ import json import discord import os import psycopg2 +import datetime -class Bot(discord.Client): - async def on_ready(self): - print("ログイン成功") - - async def on_message(self, message): - if message.author.bot: - return - - if isinstance(message.channel, discord.DMChannel): - await message.channel.send("DMを確認") - - if message.content == "/hello": - await message.channel.send("こんにちは!!!!") - - if message.content == "/password": - await message.channel.send("gjhioragiopwjhgiopweap") - - -class Cert(): +class Database(): def __init__(self): self.db = psycopg2.connect("host=localhost dbname=dislocker user=suti7 password=testing") @@ -42,9 +25,76 @@ class Cert(): elif result[0][1] == username and result[0][2] == password: return 0 +class Bot(discord.Client): + def db_connect(self, host, db, user, password): + self.db = psycopg2.connect(f"host={host} dbname={db} user={user} password={password}") + + async def on_ready(self): + print("ログイン成功") + + async def on_message(self, message): + if message.author.bot: + return + + if isinstance(message.channel, discord.DMChannel): + user_id = message.author.id + user_name = message.author.name + msg_split = message.content.split() + if msg_split[0] == "/password": + if len(msg_split) <= 2: + await message.channel.send("PC番号、もしくはデバイス番号が入力されていません。") + + elif len(msg_split) == 3: + if msg_split[1].isdigit() and msg_split[2].isdigit(): + if int(msg_split[1]) <= 10 and int(msg_split[1]) >= 1: + cursor = self.db.cursor() + cursor.execute("SELECT * FROM club_member WHERE discord_userid = %s", (str(message.author.id),)) + member_info = cursor.fetchall() + cursor.execute("INSERT INTO pc_usage_history ( member_id, pc_number, device_number, start_use_time ) VALUES ( %s, %s, %s, current_timestamp)", (member_info[0][0], int(msg_split[1]), int(msg_split[2]))) + self.db.commit() + await message.channel.send(f"使用が開始されました。\nPC番号 | {msg_split[1]}\nデバイス番号 | {msg_split[2]}\n") + else: + await message.channel.send("パソコンの台数が\n# だめです") + else: + await message.channel.send("構文が不正です。") + + elif len(msg_split) >= 4: + if msg_split[1].isdigit() and msg_split[2].isdigit(): + if int(msg_split[1]) <= 10 and int(msg_split[1]) >= 1: + cursor = self.db.cursor() + cursor.execute("SELECT * FROM club_member WHERE discord_userid = %s", (str(message.author.id),)) + member_info = cursor.fetchall() + cursor.execute("INSERT INTO pc_usage_history ( member_id, pc_number, device_number, start_use_time, use_detail ) VALUES ( %s, %s, %s, current_timestamp, %s)", (member_info[0][0], int(msg_split[1]), int(msg_split[2]), str(msg_split[3]))) + self.db.commit() + await message.channel.send(f"使用が開始されました。\nPC番号 | {msg_split[1]}\nデバイス番号 | {msg_split[2]}\n") + else: + await message.channel.send("パソコンの台数が\n# だめです") + else: + await message.channel.send("構文が不正です。") + + + elif msg_split[0] == "/stop": + cursor = self.db.cursor() + cursor.execute("SELECT * FROM club_member WHERE discord_userid = %s", (str(message.author.id),)) + member_info = cursor.fetchall() + cursor.execute("SELECT * FROM pc_usage_history WHERE member_id=%s ORDER BY id DESC LIMIT 1", (member_info[0][0],)) + history_info = cursor.fetchall() + cursor.execute("UPDATE pc_usage_history SET end_use_time = current_timestamp WHERE id = %s", (history_info[0][0],)) + self.db.commit() + + await message.channel.send(f"使用が終了されました。") + + else: + + if message.content == "/hello": + await message.channel.send("こんにちは!!!!") + + else: + await message.channel.send("どうしましたか?") + #cert = Cert() -config_dir_path = "./confg/" +config_dir_path = "./config/" db_config_path = config_dir_path + "db.json" if not os.path.isfile(db_config_path): if not os.path.isdir(config_dir_path): @@ -54,7 +104,8 @@ if not os.path.isfile(db_config_path): "host": "localhost", "db": "dislocker", "username": "user", - "password": "example_pass" + "password": "example_pass", + "port": "5432" } with open(db_config_path, "w") as w: json.dump(db_config, w, indent=4) @@ -81,4 +132,5 @@ intents = discord.Intents.default() intents.message_content = True bot = Bot(intents=intents) +bot.db_connect(db_config["host"], db_config["db"], db_config["username"], db_config["password"]) bot.run(bot_config["token"]) \ No newline at end of file