main #1

Open
BadHappy wants to merge 0 commits from SharwOrange/icalingua-python-bot:main into bh
7 changed files with 28 additions and 49 deletions

2
.gitignore vendored
View File

@ -2,4 +2,4 @@
config.toml config.toml
.vs .vs
.vscode .vscode
.idea __pycache__

View File

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

View File

@ -15,10 +15,8 @@ from mcstatus import JavaServer
# 功能包引用处 # 功能包引用处
from module import hitokoto from module import hitokoto
# 功能包结束引用 # 功能包结束引用
# 读取配置
def get_config() -> Tuple[str, str, int]: def get_config() -> Tuple[str, str, int]:
with open('config.toml', 'r', encoding='utf-8') as f: with open('config.toml', 'r', encoding='utf-8') as f:
config = qtoml.load(f) config = qtoml.load(f)
@ -87,7 +85,7 @@ async def require_auth(salt: str, versions: Dict[str, str]):
# 准备数据 # 准备数据
sign = SigningKey(bytes.fromhex(KEY)) sign = SigningKey(bytes.fromhex(KEY))
signature = sign.sign(bytes.fromhex(salt)) signature = sign.sign(bytes.fromhex(salt))
# 发送数据 # 发送数据
print(f"{len(signature.signature)=} {type(signature.signature)=}") print(f"{len(signature.signature)=} {type(signature.signature)=}")
await sio.emit('auth', signature.signature) await sio.emit('auth', signature.signature)
@ -184,10 +182,8 @@ def safe_eval(code: str) -> str:
return result return result
# 获取到新的消息
@sio.on('addMessage') @sio.on('addMessage')
async def add_message(data: Dict[str, Any]): async def add_message(data: Dict[str, Any]):
print(f"{Fore.MAGENTA}add_message: {data}{Style.RESET_ALL}") print(f"{Fore.MAGENTA}add_message: {data}{Style.RESET_ALL}")
is_self = data['message']['senderId'] == SELF_ID is_self = data['message']['senderId'] == SELF_ID
@ -198,37 +194,33 @@ async def add_message(data: Dict[str, Any]):
reply = ReplyMessage(id=data['message']['_id']) reply = ReplyMessage(id=data['message']['_id'])
if not is_self: if not is_self:
# /bot
if data.get('message').get('content') == '/bot': if data.get('message').get('content') == '/bot':
message = Message(content='icalingua bot test', message = Message(content='icalingua bot test',
room_id=data['roomId']) room_id=data['roomId'])
await sio.emit('sendMessage', message.to_json()) await sio.emit('sendMessage', message.to_json())
# !!status
elif content == '!!status': elif content == '!!status':
server = JavaServer.lookup("192.168.1.6:25565") server = JavaServer.lookup("192.168.1.6:25565")
status = server.status() status=server.status()
# query = server.query() # query = server.query()
# if status.players.online != 0: # if status.players.online != 0:
# message = Message(content=f"此服务器有 {status.players.online} 个玩家在线\n当前在线玩家有 {.join(query.players.names)}",room_id=data['roomId']) # message = Message(content=f"此服务器有 {status.players.online} 个玩家在线\n当前在线玩家有 {.join(query.players.names)}",room_id=data['roomId'])
# else: # else:
# message = Message(content=f"此服务器空无一人",room_id=data['roomId']) # 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} 个玩家在线",reply_to=reply,room_id=data['roomId'])
await sio.emit('sendMessage', message.to_json()) await sio.emit('sendMessage', message.to_json())
# !!players
elif content == '!!players': elif content == '!!players':
server = JavaServer.lookup("192.168.1.6:25565") server = JavaServer.lookup("192.168.1.6:25565")
query = server.query() query = server.query()
players = query.players.names players = query.players.names
message = Message(content=f"此服务器当前在线玩家有 {players}", reply_to=reply, room_id=data['roomId']) message = Message(content=f"此服务器当前在线玩家有 {players}",reply_to=reply,room_id=data['roomId'])
await sio.emit('sendMessage', message.to_json()) await sio.emit('sendMessage', message.to_json())
# !!hitokoto
elif content.startswith("!!hitokoto"): elif content.startswith("!!hitokoto"):
ctypet = content[len("!!hitokoto "):] ctypet = content[len("!!hitokoto "):]
@ -250,7 +242,6 @@ async def add_message(data: Dict[str, Any]):
await sio.emit('sendMessage', message.to_json()) await sio.emit('sendMessage', message.to_json())
# 未知
elif data.get('message').get('content').startswith('=='): elif data.get('message').get('content').startswith('=='):
evals: str = data.get('message').get('content')[2:] evals: str = data.get('message').get('content')[2:]
@ -285,18 +276,24 @@ async def add_message(data: Dict[str, Any]):
await asyncio.sleep(random.random() * 2) await asyncio.sleep(random.random() * 2)
await sio.emit('sendMessage', message.to_json()) await sio.emit('sendMessage', message.to_json())
# !!jrrp
elif data['message']['content'] == '!!jrrp': elif data['message']['content'] == '!!jrrp':
randomer = random.Random(f'{sender_id}-{data["message"]["date"]}-jrrp-v2') examSet = False
result = randomer.randint(0, 50) + randomer.randint(0, 50) if examSet == True:
print(f'{sender_name} 今日人品值为 {result}') print('examSet参数被设定替换人品值')
message = Message(content=f'{sender_name} 今日人品值为 {result}', message = Message(content=f'{sender_name} 今日人品值为 100\n为了让你安心备考加油考试今天你的人品值是100',
reply_to=reply, reply_to=reply,
room_id=room_id) room_id=room_id)
await asyncio.sleep(0.5) await asyncio.sleep(0.5)
await sio.emit('sendMessage', message.to_json()) await sio.emit('sendMessage', message.to_json())
else:
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}')
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 # 如果只包括一个或多个 6
# elif data['message']['content'].replace(' ', '') in ('6', '666', '六', '3+3', '5+1', '4+2', '2+4', '1+5'): # elif data['message']['content'].replace(' ', '') in ('6', '666', '六', '3+3', '5+1', '4+2', '2+4', '1+5'):
# reply = ReplyMessage(id=data['message']['_id']) # reply = ReplyMessage(id=data['message']['_id'])

View File

@ -1,7 +1,6 @@
import requests import requests
import random import random
def hitokoto(ctypet): def hitokoto(ctypet):
result_type = None result_type = None

View File

@ -1,17 +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
server = JavaServer.lookup("192.168.1.6:25565")
def mcstatus():