From 5381e09a6c022bfc6366f9a4eb5f10d8b7c8203a Mon Sep 17 00:00:00 2001 From: Junyan Qin Date: Sun, 2 Feb 2025 16:28:21 +0800 Subject: [PATCH] chore: config for discord --- pkg/core/migrations/m024_discord_config.py | 28 +++++++++++++++++++ pkg/core/stages/migrate.py | 2 +- pkg/platform/sources/discord.py | 8 +++++- templates/platform.json | 6 +++++ templates/schema/platform.json | 31 ++++++++++++++++++++++ 5 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 pkg/core/migrations/m024_discord_config.py diff --git a/pkg/core/migrations/m024_discord_config.py b/pkg/core/migrations/m024_discord_config.py new file mode 100644 index 00000000..7318d11f --- /dev/null +++ b/pkg/core/migrations/m024_discord_config.py @@ -0,0 +1,28 @@ +from __future__ import annotations + +from .. import migration + + +@migration.migration_class("discord-config", 24) +class DiscordConfigMigration(migration.Migration): + """迁移""" + + async def need_migrate(self) -> bool: + """判断当前环境是否需要运行此迁移""" + + for adapter in self.ap.platform_cfg.data['platform-adapters']: + if adapter['adapter'] == 'discord': + return False + + return True + + async def run(self): + """执行迁移""" + self.ap.platform_cfg.data['platform-adapters'].append({ + "adapter": "discord", + "enable": False, + "client_id": "1234567890", + "token": "XXXXXXXXXX" + }) + + await self.ap.platform_cfg.dump_config() diff --git a/pkg/core/stages/migrate.py b/pkg/core/stages/migrate.py index 69c13beb..1639a736 100644 --- a/pkg/core/stages/migrate.py +++ b/pkg/core/stages/migrate.py @@ -8,7 +8,7 @@ from ..migrations import m001_sensitive_word_migration, m002_openai_config_migra from ..migrations import m005_deepseek_cfg_completion, m006_vision_config, m007_qcg_center_url, m008_ad_fixwin_config_migrate, m009_msg_truncator_cfg from ..migrations import m010_ollama_requester_config, m011_command_prefix_config, m012_runner_config, m013_http_api_config, m014_force_delay_config from ..migrations import m015_gitee_ai_config, m016_dify_service_api, m017_dify_api_timeout_params, m018_xai_config, m019_zhipuai_config -from ..migrations import m020_wecom_config, m021_lark_config, m022_lmstudio_config, m023_siliconflow_config +from ..migrations import m020_wecom_config, m021_lark_config, m022_lmstudio_config, m023_siliconflow_config, m024_discord_config @stage.stage_class("MigrationStage") diff --git a/pkg/platform/sources/discord.py b/pkg/platform/sources/discord.py index 4ae086eb..f8f0179d 100644 --- a/pkg/platform/sources/discord.py +++ b/pkg/platform/sources/discord.py @@ -10,6 +10,7 @@ import re import base64 import uuid import json +import os import datetime import aiohttp @@ -201,7 +202,12 @@ class DiscordMessageSourceAdapter(adapter.MessageSourceAdapter): intents = discord.Intents.default() intents.message_content = True - self.bot = MyClient(intents=intents, proxy=self.config["proxy"]) + args = {} + + if os.getenv("http_proxy"): + args["proxy"] = os.getenv("http_proxy") + + self.bot = MyClient(intents=intents, **args) async def send_message( self, target_type: str, target_id: str, message: platform_message.MessageChain diff --git a/templates/platform.json b/templates/platform.json index b440264b..0eb13feb 100644 --- a/templates/platform.json +++ b/templates/platform.json @@ -42,6 +42,12 @@ "app_id": "cli_abcdefgh", "app_secret": "XXXXXXXXXX", "bot_name": "LangBot" + }, + { + "adapter": "discord", + "enable": true, + "client_id": "1234567890", + "token": "XXXXXXXXXX" } ], "track-function-calls": true, diff --git a/templates/schema/platform.json b/templates/schema/platform.json index 900623b8..2c05eab6 100644 --- a/templates/schema/platform.json +++ b/templates/schema/platform.json @@ -213,6 +213,37 @@ "description": "飞书的bot_name" } } + }, + { + "title": "Discord 适配器", + "description": "用于接入 Discord", + "properties": { + "adapter": { + "type": "string", + "const": "discord" + }, + "enable": { + "type": "boolean", + "default": false, + "description": "是否启用此适配器", + "layout": { + "comp": "switch", + "props": { + "color": "primary" + } + } + }, + "client_id": { + "type": "string", + "default": "", + "description": "Discord 的 client_id" + }, + "token": { + "type": "string", + "default": "", + "description": "Discord 的 token" + } + } } ] }