Compare commits

..

49 Commits
check ... main

Author SHA1 Message Date
6de8b46cc8 F| 2023-12-31 09:14:42 +08:00
51011ec401 修改回复功能 2023-12-30 19:55:48 +08:00
6a3a31ab18 将部分消息添加回复功能 2023-12-30 19:55:25 +08:00
48867b8cf9 完善了一言功能:添加一言来源 2023-12-30 18:30:59 +08:00
70a01ec9f5 Merge branch 'main' of https://server1.xfcloud.org:20011/SharwOrange/icalingua-python-bot 2023-12-30 18:28:19 +08:00
49be7abc97 修改了requirement.txt 2023-12-30 18:28:09 +08:00
92e86ae7cc 删除 module/hitokoto/__pycache__/__init__.cpython-311.pyc 2023-12-30 10:26:28 +00:00
1ea0744062 修改了.gitignore 2023-12-30 18:26:04 +08:00
7c0016c4be 完善了一言功能 2023-12-30 18:23:22 +08:00
88260597b9 删除test.py 2023-12-30 17:43:26 +08:00
e035c8e93c 上传文件至 module/hitokoto 2023-12-30 09:39:00 +00:00
ec3962306e 上传文件至 / 2023-12-30 09:38:34 +00:00
a7c4686f66 Merge branch 'main' of https://server1.xfcloud.org:20011/SharwOrange/icalingua-python-bot 2023-12-30 15:34:07 +08:00
3e68e1b509 修改变量名 2023-12-30 15:30:41 +08:00
332657936f 删除 .vscode/settings.json
Signed-off-by: SharwOrange橙夜 <kuliangcha@qq.com>
2023-12-30 07:23:04 +00:00
196d3d8549 修改.gittignore 2023-12-30 15:19:27 +08:00
c138f0ac7e 添加半成品的一言 2023-12-30 15:16:50 +08:00
43dc6deaea 删掉了。vs 2023-12-28 22:10:34 +08:00
014116c105 修改了readme(again) 2023-12-28 22:10:00 +08:00
fc0b10815f 修改了readme 2023-12-28 22:08:28 +08:00
cebf394e23 将rtoml改为qtoml 2023-12-28 22:05:10 +08:00
1a5001312b 更新 readme.md
Signed-off-by: SharwOrange橙夜 <kuliangcha@qq.com>
2023-12-27 14:09:58 +00:00
4526284902 重新添加了README 2023-12-27 22:08:06 +08:00
47e4912c97 修改了一部分代码,支持了服务器人数查询 2023-12-27 22:06:57 +08:00
4d38da674e 上传文件至 /
Signed-off-by: SharwOrange橙夜 <kuliangcha@qq.com>
2023-12-26 10:42:25 +00:00
07d297173d 更新 readme.md
Signed-off-by: SharwOrange橙夜 <kuliangcha@qq.com>
2023-12-26 05:38:32 +00:00
dcdf91f445 更新 readme.md 2023-12-26 05:37:50 +00:00
a38a925e72 更新 readme.md
Signed-off-by: SharwOrange橙夜 <kuliangcha@qq.com>
2023-12-26 05:37:30 +00:00
018a5cd9ea 更新 readme.md
Signed-off-by: SharwOrange橙夜 <kuliangcha@qq.com>
2023-12-26 05:36:36 +00:00
daf53ba226
Update rust_socketio dependency and add patch for local development 2023-12-11 21:27:08 +08:00
27db3d5ef0
Refactor client.rs and main.rs 2023-12-11 18:17:55 +08:00
d1b27d3825
Update connect.py: Fix requireAuth function and modify jrrp logic 2023-12-11 18:17:41 +08:00
ec399233cc
Add IcalinguaSinger struct and client module 2023-12-11 01:17:25 +08:00
29c43e64e6
Add .gitignore and Cargo.toml files, and update connect.py and main.rs
Refactor authentication key handling in main.rs

Add event handler for any event

Fix authentication signature generation | 我tm直接就是一个感动中国

aaaaaa | key!
2023-12-11 01:03:19 +08:00
8dfbf1d7ab
byby safe eval 2023-10-15 12:33:01 +08:00
6200a18b82
rua 2023-10-15 01:25:50 +08:00
df616d8b53
记住了,谢谢 2023-10-15 01:23:07 +08:00
c1966e6f55
woops 2023-10-15 01:15:14 +08:00
88c46f754f
FXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXK 2023-10-15 01:14:00 +08:00
a2f5b30e75
add types 2023-10-07 00:22:28 +08:00
d5f289887f
just fxxx it up 2023-10-05 13:08:41 +08:00
78b24f0689
2023-10-04 16:44:08 +08:00
bc42df2472
F | 尝试在新线程里跑? 2023-10-04 16:35:35 +08:00
43a79b3f1c
F | 防止超时 2023-10-04 16:24:45 +08:00
8584c6c6fd
移除无用的部分 2023-10-04 12:36:52 +08:00
b6d58cf9fc
增加计时 2023-10-03 21:30:36 +08:00
e55c85a5ad
Add | readme and temp 2023-10-03 12:54:28 +08:00
0a8350e934
add license 2023-10-03 12:37:11 +08:00
a562ae4cef
demo
add requirement

re formated
2023-10-03 12:35:45 +08:00
13 changed files with 92 additions and 32 deletions

6
.gitignore vendored
View File

@ -2,4 +2,8 @@
config.toml
.vs
.vscode
.idea
<<<<<<< HEAD
.idea
=======
__pycache__
>>>>>>> 51011ec401ee07fe7446b24fad680a629e12ff56

3
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
# 默认忽略的文件
/shelf/
/workspace.xml

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 3.9 (2)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

4
.idea/misc.xml Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (2)" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/icalingua-python-bot.iml" filepath="$PROJECT_DIR$/.idea/icalingua-python-bot.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -1,4 +1,4 @@
private_key = "" # 与 icalingua 客户端使用的 private_key 一致
host = " " # docker 版 icalingua 服务的地址
host = "" # docker 版 icalingua 服务的地址
self_id = 0 # 机器人的 qq 号

View File

@ -15,10 +15,8 @@ from mcstatus import JavaServer
# 功能包引用处
from module import hitokoto
# 功能包结束引用
# 读取配置
def get_config() -> Tuple[str, str, int]:
with open('config.toml', 'r', encoding='utf-8') as f:
config = qtoml.load(f)
@ -87,7 +85,7 @@ async def require_auth(salt: str, versions: Dict[str, str]):
# 准备数据
sign = SigningKey(bytes.fromhex(KEY))
signature = sign.sign(bytes.fromhex(salt))
# 发送数据
print(f"{len(signature.signature)=} {type(signature.signature)=}")
await sio.emit('auth', signature.signature)
@ -184,10 +182,8 @@ def safe_eval(code: str) -> str:
return result
# 获取到新的消息
@sio.on('addMessage')
async def add_message(data: Dict[str, Any]):
print(f"{Fore.MAGENTA}add_message: {data}{Style.RESET_ALL}")
is_self = data['message']['senderId'] == SELF_ID
@ -195,62 +191,54 @@ async def add_message(data: Dict[str, Any]):
sender_id = data['message']['senderId']
content = data['message']['content']
room_id = data['roomId']
reply = ReplyMessage(id=data['message']['_id'])
if not is_self:
# /bot
if data.get('message').get('content') == '/bot':
message = Message(content='icalingua bot test',
room_id=data['roomId'])
await sio.emit('sendMessage', message.to_json())
# !!status
elif content == '!!status':
server = JavaServer.lookup("192.168.1.6:25565")
status=server.status()
# query = server.query()
# if status.players.online != 0:
# message = Message(content=f"此服务器有 {status.players.online} 个玩家在线\n当前在线玩家有 {.join(query.players.names)}",room_id=data['roomId'])
# else:
# message = Message(content=f"此服务器空无一人",room_id=data['roomId'])
message = Message(content=f"此服务器有 {status.players.online} 个玩家在线",reply_to=reply,room_id=data['roomId'])
message = Message(content=f"此服务器有 {status.players.online} 个玩家在线",room_id=data['roomId'])
await sio.emit('sendMessage', message.to_json())
# !!players
elif content == '!!players':
server = JavaServer.lookup("192.168.1.6:25565")
query = server.query()
players = query.players.names
message = Message(content=f"此服务器当前在线玩家有 {players}",reply_to=reply,room_id=data['roomId'])
message = Message(content=f"此服务器当前在线玩家有 {players}",room_id=data['roomId'])
await sio.emit('sendMessage', message.to_json())
# !!hitokoto
elif content.startswith("!!hitokoto"):
ctypet = content[len("!!hitokoto "):]
if content == "!!hitokoto":
result_code, result_data, result_type= hitokoto.hitokoto(None)
result_code, result_data = hitokoto.hitokoto("没有")
else:
result_code, result_data, result_type= hitokoto.hitokoto(ctypet)
result_code, result_data = hitokoto.hitokoto(ctypet)
if result_code == 3:
message = Message(content=f"参数不对哦!你可以输入!!hitokoto help查看帮助",reply_to=reply,room_id=data['roomId'])
message = Message(content=f"参数不对哦!",room_id=data['roomId'])
elif result_code == 2:
message = Message(content=f"发生了不可描述的错误X_X但可以肯定的是模块炸了",reply_to=reply,room_id=data['roomId'])
elif result_code == 1:
message = Message(content=f"(参数)句子类型如下\na 动画\nb 漫画\nc 游戏\nd 文学\ne 原创\nf 来自网络\ng 其他\nh 影视\ni 诗词\nj 网易云\nk 哲学\nl 抖机灵",reply_to=reply,room_id=data['roomId'])
message = Message(content=f"发生了不可描述的错误X_X", room_id=data['roomId'])
elif result_code == 0:
message = Message(content=f"{result_data['hitokoto']}\n来源:{result_data['from']}\n类型:{result_type}",reply_to=reply,room_id=data['roomId'])
message = Message(content=f"Hitokoto: {result_data['hitokoto']}", room_id=data['roomId'])
else:
message = Message(content=f"你看到这条消息就代表有bug出炉但肯定不是模块炸了",reply_to=reply,room_id=data['roomId'])
message = Message(content=f"但你看到这条消息就代表有bug出炉", room_id=data['roomId'])
await sio.emit('sendMessage', message.to_json())
# 未知
elif data.get('message').get('content').startswith('=='):
evals: str = data.get('message').get('content')[2:]
@ -285,18 +273,16 @@ async def add_message(data: Dict[str, Any]):
await asyncio.sleep(random.random() * 2)
await sio.emit('sendMessage', message.to_json())
# !!jrrp
elif data['message']['content'] == '!!jrrp':
randomer = random.Random(f'{sender_id}-{data["message"]["date"]}-jrrp-v2')
result = randomer.randint(0, 50) + randomer.randint(0, 50)
print(f'{sender_name} 今日人品值为 {result}')
reply = ReplyMessage(id=data['message']['_id'])
message = Message(content=f'{sender_name} 今日人品值为 {result}',
reply_to=reply,
room_id=room_id)
await asyncio.sleep(0.5)
await sio.emit('sendMessage', message.to_json())
# 如果只包括一个或多个 6
# elif data['message']['content'].replace(' ', '') in ('6', '666', '六', '3+3', '5+1', '4+2', '2+4', '1+5'):
# reply = ReplyMessage(id=data['message']['_id'])

View File

@ -1,6 +1,7 @@
import requests
import random
def hitokoto(ctypet):
result_type = None
@ -17,6 +18,7 @@ def hitokoto(ctypet):
ctype = 'd'
elif ctypet == '原创' or ctypet == 'e':
ctype = 'e'
elif ctypet == '网络' or ctypet == 'f':
elif ctypet == '来自网络' or ctypet == 'f':
ctype = 'f'
elif ctypet == '其他' or ctypet == 'g':
@ -31,6 +33,15 @@ def hitokoto(ctypet):
ctype = 'k'
elif ctypet == '抖机灵' or ctypet == 'l':
ctype = 'l'
elif ctypet == '没有':
ctype = random.choice('abcdefghijkl')
params_value = {'c': ctype}
hitokoto = requests.get('https://v1.hitokoto.cn', params=params_value)
return 0, hitokoto.json()
else:
return 3, None
elif ctypet == None:
ctype = random.choice('abcdefghijkl')
elif ctypet == 'help':
@ -41,6 +52,11 @@ def hitokoto(ctypet):
params_value = {'c': ctype}
hitokoto = requests.get('https://v1.hitokoto.cn', params=params_value)
return 0, hitokoto.json()
except IOError:
return 2, None
htype=hitokoto.json()['type']
if htype=='a':
result_type = '动画'

0
module/hitokoto/test.py Normal file
View File

View File

@ -0,0 +1,15 @@
import time
import random
import asyncio
import traceback
from typing import Dict, List, Tuple, Any, Optional, Union, Literal
import qtoml
import socketio
from colorama import Fore, Style
from nacl.signing import SigningKey
from lib_not_dr.types import Options
from mcstatus import JavaServer
def mcstatus():

View File

@ -3,5 +3,9 @@ colorama
qtoml
pynacl
python-socketio[asyncio_client]
<<<<<<< HEAD
mcstatus
requests
=======
mcstatus
requests
>>>>>>> 51011ec401ee07fe7446b24fad680a629e12ff56