diff --git a/src/launch.py b/src/launch.py new file mode 100644 index 0000000..49584e7 --- /dev/null +++ b/src/launch.py @@ -0,0 +1,17 @@ +import time +import os +from dotenv import load_dotenv +from ncatbot.core import BotClient + +load_dotenv(dotenv_path=r"../.env") + +bot = BotClient() + +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") +) \ No newline at end of file diff --git a/src/__init__.py b/src/plugins/data_base/__init__.py similarity index 100% rename from src/__init__.py rename to src/plugins/data_base/__init__.py diff --git a/src/plugins/data_base/dataBase.py b/src/plugins/data_base/dataBase.py new file mode 100644 index 0000000..2efd40c --- /dev/null +++ b/src/plugins/data_base/dataBase.py @@ -0,0 +1,4 @@ +from sqlmodel import SQLModel, Session, select, create_engine + +class Data(SQLModel, table=True): + __tablename__ = 'file' diff --git a/src/plugins/get_file/__init__.py b/src/plugins/get_file/__init__.py new file mode 100644 index 0000000..ec9ad08 --- /dev/null +++ b/src/plugins/get_file/__init__.py @@ -0,0 +1,3 @@ +from .get_file import GetFile + +__all__ = ['GetFile'] diff --git a/src/plugins/get_file/get_file.py b/src/plugins/get_file/get_file.py new file mode 100644 index 0000000..d202330 --- /dev/null +++ b/src/plugins/get_file/get_file.py @@ -0,0 +1,129 @@ +from ncatbot.core import BotClient, GroupMessage, PrivateMessage +# from ncatbot.core import (MessageChain, Text, Image) +from ncatbot.utils import get_log +from ncatbot.plugin import BasePlugin, CompatibleEnrollment +from dotenv import load_dotenv +import requests +import os + +# bot = BotClient() +bot = CompatibleEnrollment +_log = get_log() + + +class GetFile(BasePlugin): + name = "GetFile" + version = "0.0.1 beta" + + @bot.private_event() + async def on_receive_images_private_event(self, 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 self.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(self, msg: GroupMessage): + _log.info(f"The message's meta data is: {str(msg)}") + _log.info(f"The message's raw message is: {msg.raw_message}") + + # if "[CQ:image," in msg.raw_message: + if msg.raw_message.startswith("[CQ:image,"): + divided_message = msg.raw_message.split(',') + + for item in divided_message: + # if "file=" in item: + if item.startswith("file="): + file_name = item.split("=")[1] + _log.info(f"Name of the image is: {file_name}") + image_url = await self.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"../data/pics/{file_name}", 'wb') as f: + f.write(img) + + @bot.group_event() + async def on_receive_videos_group_event(self, msg: GroupMessage): + _log.info(f"The message's meta data is: {str(msg)}") + _log.info(f"The message's raw message is: {msg.raw_message}") + + message = msg.raw_message[1: -1] + + if message.startswith("CQ:video,"): + divided_message = message.split(',') + for item in divided_message: + if item.startswith("file="): + file_name = item.split("=")[1] + _log.info(f"Name of the video is: {file_name}") + video_url = await self.api.get_file(file_name) + _log.info(f"Video's information collected by \"get_video\" is: {video_url}") + real_url = video_url['data']['url'] + _log.info(f"Video's real url is: {real_url}") + + response = requests.get(real_url) + video = response.content + with open(f"../data/videos/{file_name}", 'wb') as f: + f.write(video) + + @bot.private_event() + async def on_receive_videos_private_event(self, msg: PrivateMessage): + _log.info(f"The message's meta data is: {str(msg)}") + _log.info(f"The message's raw message is: {msg.raw_message}") + + message = msg.raw_message[1: -1] + + if message.startswith("CQ:video,"): + divided_message = message.split(',') + for item in divided_message: + if item.startswith("file="): + file_name = item.split("=")[1] + _log.info(f"Name of the video is: {file_name}") + video_url = await self.api.get_file(file_name) + _log.info(f"Video's information collected by \"get_video\" is: {video_url}") + real_url = video_url['data']['url'] + _log.info(f"Video's real url is: {real_url}") + + response = requests.get(real_url) + video = response.content + with open(f"../data/videos/{file_name}", 'wb') as f: + f.write(video) + + +""" +当单独运行这个程序时,会连接napcat并保存图片和视频到本地。 + +""" + +if __name__ == "__main__": + load_dotenv(dotenv_path=r"../../../.env") + bot = BotClient() + 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") + ) + +# [2025-07-25 17:07:40,602] INFO [MainThread|MainProcess] Logger (get_image.py:on_receive_images_group_event:40) | The message's raw message is: [CQ:video,file=3d13c5917a796a92d91d8f9de44b0bf4.mp4,url=https://multimedia.nt.qq.com.cn:443/download?appid=1415&format=origin&orgfmt=t265&spec=0&client_proto=ntv2&client_appid=537298509&client_type=linux&client_ver=3.2.18-36580&client_down_type=auto&client_aio_type=aio&rkey=CAMSoAHGtzhaJAf05S58aBorSh34zdFk2POE-DFhRWajbvwClbIFzBwF7L6O3xQ7vGtHcK3uh3lqvl9-WhxzqeO_EtfFrx6Em_sJMdepoSJKwoBLIZHPA84yP0MoG10RNQylp1U4ZWQFTCG6h6dFARX4rHyJkvpAi1Zit8neB9En2OELgwcSzyUnVqTWluv8OxiQpEW3QmeAhR2O0SSO0v40V_Yi,file_size=2130820] diff --git a/src/utils/get_image.py b/src/utils/get_image.py deleted file mode 100644 index 49d4f40..0000000 --- a/src/utils/get_image.py +++ /dev/null @@ -1,77 +0,0 @@ -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: - if msg.raw_message.startswith("[CQ:image,"): - divided_message = msg.raw_message.split(',') - - for item in divided_message: - # if "file=" in item: - if item.startswith("file="): - 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"../../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") - )