From 504a472b2261ff2302b343014d7fbaac61b25698 Mon Sep 17 00:00:00 2001 From: Pyhtagodzilla <1670671958@qq.com> Date: Sat, 19 Jul 2025 11:48:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=83=E5=91=83=E9=87=8D=E5=86=99=E4=BA=86?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=9B=BE=E7=89=87=E6=B6=88=E6=81=AF=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 ++- src/main.py | 92 ------------------------------------------ src/utils/__init__.py | 0 src/utils/get_image.py | 75 ++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 93 deletions(-) delete mode 100644 src/main.py create mode 100644 src/utils/__init__.py create mode 100644 src/utils/get_image.py diff --git a/.gitignore b/.gitignore index 3598c30..71513e4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -tests \ No newline at end of file +tests +.env +src/data/pics +src/logs \ No newline at end of file diff --git a/src/main.py b/src/main.py deleted file mode 100644 index 3b7025a..0000000 --- a/src/main.py +++ /dev/null @@ -1,92 +0,0 @@ -from ncatbot.core import BotClient, GroupMessage, PrivateMessage -# from ncatbot.core import (MessageChain, Text, Image) -from ncatbot.utils import get_log -import requests - -bot = BotClient() -_log = get_log() - -@bot.private_event() -async def on_receive_images_private_event(msg: PrivateMessage): - _log.info(msg) - - if "url=https://" not in msg.raw_message: - return - - else: - try: - file_name = msg.raw_message.split(",")[1].split("=")[1] - image_url = await bot.api.get_image(file_name) - real_url = image_url['data']['url'] - except IndexError as e: - _log.debug(e) - real_url = "None" - file_name = "None" - except TypeError as e: - _log.debug(e) - real_url = "None" - file_name = "None" - - if real_url == "None": - return - else: - response = requests.get(real_url) - img = response.content - with open(f"data/pics/{file_name}", 'wb') as f: - f.write(img) - - # file_name = msg.raw_message.split(",")[1].split("=")[1] - # image_url = await bot.api.get_image(file_name) - # real_url = image_url['data']['url'] - # - # _log.debug(f"image's real url: {real_url}") - # - # try: - # response = requests.get(real_url) - # img = response.content - # with open(f"data/pics/{file_name}", 'wb') as f: - # f.write(img) - # except Exception as e: - # _log.error(e) - # pass - -@bot.group_event() -async def on_receive_images_group_event(msg: GroupMessage): - _log.info(msg) - - if "url=https://" not in msg.raw_message: - return - - else: - try: - file_name = msg.raw_message.split(",")[1].split("=")[1] - image_url = await bot.api.get_image(file_name) - real_url = image_url['data']['url'] - except IndexError as e: - _log.debug(e) - real_url = "None" - file_name = "None" - except TypeError as e: - _log.debug(e) - real_url = "None" - file_name = "None" - - - if real_url == "None": - return - else: - response = requests.get(real_url) - img = response.content - with open(f"data/pics/{file_name}", 'wb') as f: - f.write(img) - -if __name__ == "__main__": - - api = bot.run( - bt_uin="203758258", - root="1670671958", - ws_uri="ws://192.168.10.78:3001", - ws_token="", - webui_uri="http://192.168.10.78:6099", - webui_token="@Jtbx2mtblj" - ) \ No newline at end of file diff --git a/src/utils/__init__.py b/src/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/utils/get_image.py b/src/utils/get_image.py new file mode 100644 index 0000000..6042129 --- /dev/null +++ b/src/utils/get_image.py @@ -0,0 +1,75 @@ +from ncatbot.core import BotClient, GroupMessage, PrivateMessage +# from ncatbot.core import (MessageChain, Text, Image) +from ncatbot.utils import get_log +from dotenv import load_dotenv +import requests +import os + +bot = BotClient() +_log = get_log() + + +@bot.private_event() +async def on_receive_images_private_event(msg: PrivateMessage): + meta_message = str(msg) + _log.info(f"The message's meta data is: {meta_message}") + _log.info(f"The message's raw message is: {msg.raw_message}") + + if "[CQ:image," in msg.raw_message: + divided_message = msg.raw_message.split(',') + + for item in divided_message: + if "file=" in item: + file_name = item.split("=")[1] + _log.info(f"Name of the image is: {file_name}") + image_url = await bot.api.get_image(file_name) + _log.info(f"Image's information collected by \"get_image\" is: {image_url}") + real_url = image_url['data']['url'] + _log.info(f"Image's real url is: {real_url}") + + response = requests.get(real_url) + img = response.content + with open(f"D:/Projects/memebot/src/data/pics/{file_name}", 'wb') as f: + f.write(img) + + +@bot.group_event() +async def on_receive_images_group_event(msg: GroupMessage): + meta_message = str(msg) + _log.info(f"The message's meta data is: {meta_message}") + _log.info(f"The message's raw message is: {msg.raw_message}") + + if "[CQ:image," in msg.raw_message: + divided_message = msg.raw_message.split(',') + + for item in divided_message: + if "file=" in item: + file_name = item.split("=")[1] + _log.info(f"Name of the image is: {file_name}") + image_url = await bot.api.get_image(file_name) + _log.info(f"Image's information collected by \"get_image\" is: {image_url}") + real_url = image_url['data']['url'] + _log.info(f"Image's real url is: {real_url}") + + response = requests.get(real_url) + img = response.content + with open(f"D:/Projects/memebot/src/data/pics/{file_name}", 'wb') as f: + f.write(img) + + +""" +当单独运行这个程序时,会连接napcat并保存图片到本地。 + +""" + +if __name__ == "__main__": + load_dotenv(dotenv_path=r"../../.env") + + api = bot.run( + bt_uin=os.getenv("BOT_ACCOUNT"), + root=os.getenv("ROOT_ACCOUNT"), + ws_uri=os.getenv("WS_URI"), + ws_token=os.getenv("WS_TOKEN"), + webui_uri=os.getenv("WEBUI_URI"), + webui_token=os.getenv("WEBUI_TOKEN") + )