From e2a06a62192eff9792e9a3fe6b3a063bfa0f46cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=97=D0=B0=D0=B6=D0=B8=D0=B3=D0=B8=D0=BD=20=D0=91=D0=BE?= =?UTF-8?q?=D0=B3=D0=B4=D0=B0=D0=BD=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Wed, 19 Apr 2023 20:49:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=91=D0=94=20=D0=BD=D0=B0=20=D0=BF=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D0=BC;=20=D0=BF=D0=BE=D1=87=D0=B8=D1=81=D1=82=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B8;=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=B3=D0=BB=D0=B0=D0=B2=D0=BD=D1=8B=D0=B9=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=20=D0=B2=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D0=BE=20=C2=AB?= =?UTF-8?q?bot.py=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{gitlab-discord_bot.py => bot.py} | 55 ++----------------- 1 file changed, 4 insertions(+), 51 deletions(-) rename source/gitlab-discord_bot/{gitlab-discord_bot.py => bot.py} (60%) diff --git a/source/gitlab-discord_bot/gitlab-discord_bot.py b/source/gitlab-discord_bot/bot.py similarity index 60% rename from source/gitlab-discord_bot/gitlab-discord_bot.py rename to source/gitlab-discord_bot/bot.py index a35fc1b..b008663 100644 --- a/source/gitlab-discord_bot/gitlab-discord_bot.py +++ b/source/gitlab-discord_bot/bot.py @@ -1,29 +1,19 @@ ''' Интеграция Дискорда и ГитЛаба © Стешенко Артём и Зажигин Богдан 2023—2023 ''' -from os import environ, remove +from os import environ # Получение переменных среды и удаление файлов — # https://docs.python.org/3.12/library/os.html -import msgpack - # Бинарная сериализация, создание машинной базы данных — - # https://github.com/msgpack/msgpack-python/blob/main/README.md import gitlab, discord # Обертка АПИ ГитЛаба — https://python-gitlab.readthedocs.io/en/latest и # АПИ Дискорда — https://discordpy.readthedocs.io/en/latest -try: - with open("database.msgpack", "rb") as database: - database_content = database.read() - database_spisok = msgpack.unpackb(database_content, strict_map_key=False) -except: - database_spisok = dict() +database_spisok = dict() gitlab_instance = gitlab.Gitlab(url = 'https://gitlab.megu.one', private_token = environ.get("TOKEN_GITLAB")) # определение адреса и токена экземляра ГитЛаба -'''project = gitlab_instance.projects.get(13)''' # определение проекта в котором нужно создавать задачи - # TODO: Привязка экзепмляра и проекта к Дискорд Каналу в БД, а не в коде intents = discord.Intents.default() # использовать требования по умолчанию @@ -43,7 +33,7 @@ async def on_message(message): # обработка каждого сообще issue_text = message.content.replace("/issue ","") # получение текста команды «issue» if command('/issue'): # команда создания задачи на ГитЛабе if database_spisok.get(int(message.channel.id)): - project = gitlab_instance.projects.get(database_spisok.get(int(message.channel.id))) + project = gitlab_instance.projects.get(str(database_spisok.get(int(message.channel.id)))) if project.issues.create({'title': issue_text}): await reply("Задача «" + issue_text + "» создана успешно, ^w^") else: @@ -54,7 +44,6 @@ async def on_message(message): # обработка каждого сообще if command('/project'): try: database_spisok[int(message.channel.id)] = int(message.content.replace("/project ","")) - open("database.msgpack", "wb").write(msgpack.packb(database_spisok)) await reply("данные сохранены ^w^") except: await reply("не удалось сохранить id") @@ -77,40 +66,4 @@ async def on_message(message): # обработка каждого сообще await reply("====================================") await reply("список комманд которые я выполняю:\n/issue - создание задачи на gitlab\n/project - подключение id канала discord с id канала gitlab\n/remove - удаление id\n/show - показ id (к каждому каналу discord подключён отдельный id gitlab)\n/speak - я расскажу немного о себе (что сейчас и делаю)") - '''if command('/save'): - open("database.msgpack", "wb").write(msgpack.packb(database_spisok))''' - -discord_bot.run(environ.get("TOKEN_DISCORD")) # авторизация бота по токену из среды и запуск - - -# TODO: Регистрировать команды бота в Команды Приложения — -# https://discordpy.readthedocs.io/en/latest/interactions/api.html#application-commands: -#======================================================================= - -'''tree_commands = discord.app_commands.CommandTree(discord_bot) # Объявление дерева команд бота - if message.content.startswith('/project'): - slovar.update({message.channel.id: message.content.replace("/project ","")}) - await reply(slovar) -slovar = dict() -command_issue_extras = dict() -@tree_commands.command(name="issue", description="создать задачу на GitLab", nsfw=False, auto_locale_strings=False) -async def issue(interaction): - await interaction.response.send_message(f"Pong", ephemeral=True) -add_command(*command_issue, guild=None, guilds=None, override=True) -asyncio.run(sync(*command_issue, guild=None))''' - -#======================================================================= - -'''database_file = open("database.msgpack", "w") -database = msgpack.unpackb(database_file.read()) # \31123\123123\123132\213 -# {1: a}, {2: b} -Ctrl+c = SINGal TERMinate - -database[3] = "c" -# {1: a}, {2: b}, {3, c} - -# /save -database_file.write( - msgpack.packb(database, use_bin_type=True) # \31123\123123\123132\213 + \123123123123 -) -database_file.close()''' \ No newline at end of file +discord_bot.run(str(environ.get("TOKEN_DISCORD"))) # авторизация бота по токену из среды и запуск \ No newline at end of file