Compare commits

..

9 Commits
main ... check

13 changed files with 32 additions and 92 deletions

6
.gitignore vendored
View File

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

3
.idea/.gitignore vendored
View File

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

View File

@ -1,8 +0,0 @@
<?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

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

View File

@ -1,4 +0,0 @@
<?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>

View File

@ -1,8 +0,0 @@
<?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>

View File

@ -1,6 +0,0 @@
<?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,8 +15,10 @@ 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)
@ -85,7 +87,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)
@ -182,8 +184,10 @@ 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
@ -191,54 +195,62 @@ 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} 个玩家在线",room_id=data['roomId'])
message = Message(content=f"此服务器有 {status.players.online} 个玩家在线",reply_to=reply,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}",room_id=data['roomId'])
message = Message(content=f"此服务器当前在线玩家有 {players}",reply_to=reply,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 = hitokoto.hitokoto("没有")
result_code, result_data, result_type= hitokoto.hitokoto(None)
else:
result_code, result_data = hitokoto.hitokoto(ctypet)
result_code, result_data, result_type= hitokoto.hitokoto(ctypet)
if result_code == 3:
message = Message(content=f"参数不对哦!",room_id=data['roomId'])
message = Message(content=f"参数不对哦!你可以输入!!hitokoto help查看帮助",reply_to=reply,room_id=data['roomId'])
elif result_code == 2:
message = Message(content=f"发生了不可描述的错误X_X", room_id=data['roomId'])
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'])
elif result_code == 0:
message = Message(content=f"Hitokoto: {result_data['hitokoto']}", room_id=data['roomId'])
message = Message(content=f"{result_data['hitokoto']}\n来源:{result_data['from']}\n类型:{result_type}",reply_to=reply,room_id=data['roomId'])
else:
message = Message(content=f"但你看到这条消息就代表有bug出炉", room_id=data['roomId'])
message = Message(content=f"你看到这条消息就代表有bug出炉但肯定不是模块炸了",reply_to=reply,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:]
@ -273,16 +285,18 @@ 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,7 +1,6 @@
import requests
import random
def hitokoto(ctypet):
result_type = None
@ -18,7 +17,6 @@ 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':
@ -33,15 +31,6 @@ 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':
@ -52,11 +41,6 @@ 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 = '动画'

View File

@ -1,15 +0,0 @@
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,9 +3,5 @@ colorama
qtoml
pynacl
python-socketio[asyncio_client]
<<<<<<< HEAD
mcstatus
=======
mcstatus
requests
>>>>>>> 51011ec401ee07fe7446b24fad680a629e12ff56
requests