2025-04-27 16:36:34 +08:00
import json
2025-04-27 03:06:27 +08:00
from astrbot . api . event import filter , AstrMessageEvent , MessageEventResult
from astrbot . api . star import Context , Star , register
from astrbot . api import logger
import random
from . back import time_long , volume , isUserExist , insertUser , seconds_to_hms , ml_to_l_ml , get_user_name
import pymysql
2025-04-27 17:11:06 +08:00
from . Tool import get_tool_name
2025-04-27 03:06:27 +08:00
@register ( " helloworld " , " YourName " , " 一个简单的 Hello World 插件 " , " 1.0.0 " )
class MyPlugin ( Star ) :
def __init__ ( self , context : Context ) :
super ( ) . __init__ ( context )
@filter.command ( " 打打我的 " )
async def dajiao ( self , event : AstrMessageEvent ) :
if isUserExist ( event . get_sender_id ( ) ) != True :
insertUser ( event . get_sender_id ( ) )
time = round ( random . uniform ( 1 , 600 ) , 2 )
V = round ( random . uniform ( 0.01 , 100 ) , 2 )
a = time_long ( time )
b = volume ( V )
user_name = event . get_sender_id ( )
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称, 默认127.0.0.1
, user = ' saipo ' # 用户名
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
cur = conn . cursor ( )
sql = " INSERT INTO dajiao (openid, timelong, volume) VALUES ( %s , %s , %s ) "
values = ( user_name , time , V )
cur . execute ( sql , values )
conn . commit ( )
cur . close ( )
conn . close ( )
yield event . plain_result ( f " Hello, { get_user_name ( event . get_sender_id ( ) ) } , 你坚持了 { time } s哦, { a } .射出 { V } ml, { b } ! " )
2025-05-21 19:58:41 +08:00
@filter.command ( " 给我连打十次 " )
async def dajiaoX ( self , event : AstrMessageEvent ) :
if isUserExist ( event . get_sender_id ( ) ) != True :
insertUser ( event . get_sender_id ( ) )
2025-05-21 19:41:50 +08:00
user_name = event . get_sender_id ( )
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称, 默认127.0.0.1
, user = ' saipo ' # 用户名
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
2025-05-21 20:23:44 +08:00
#cur = conn.cursor()
2025-05-21 20:38:48 +08:00
time = [ ] ; V = [ ] ; a = [ ] ; b = [ ]
2025-05-21 19:41:50 +08:00
for i in range ( 0 , 10 ) :
time . append ( round ( random . uniform ( 1 , 600 ) , 2 ) )
2025-05-21 20:38:48 +08:00
V . append ( round ( random . uniform ( 0.01 , 100 ) , 2 ) )
a . append ( time_long ( time ) )
b . append ( volume ( V ) )
2025-05-21 20:23:44 +08:00
#sql = "INSERT INTO dajiao (openid, timelong, volume) VALUES (%s, %s, %s)"
#values = (user_name,time[i],V[i])
#cur.execute(sql,values)
#conn.commit()
#cur.close()
#conn.close()
2025-05-21 20:38:48 +08:00
yield event . plain_result ( f " Hello, { get_user_name ( event . get_sender_id ( ) ) } , 第一次你坚持了 { time [ 0 ] } s哦, { a [ 0 ] } .射出 { V [ 0 ] } ml, { b [ 0 ] } ! \n 第二次你坚持了 { time [ 1 ] } s哦, { a [ 1 ] } .射出 { V [ 1 ] } ml, { b [ 1 ] } ! \n 哎呀,一点也打不出来了! " )
#yield event.plain_result(f"Hello,{get_user_name(event.get_sender_id())}, 第一次你坚持了{time[0]}s哦, {a[0]}.射出{V[0]}ml,{b[0]}!\n一点也打不出来了!")
2025-05-21 20:09:08 +08:00
2025-05-08 19:30:21 +08:00
@filter.command ( " 打打你的 " )
2025-05-08 19:30:47 +08:00
async def dajiao_other ( self , event : AstrMessageEvent , message : str ) :
2025-05-08 19:30:21 +08:00
if isUserExist ( event . get_sender_id ( ) ) != True :
insertUser ( event . get_sender_id ( ) )
time = round ( random . uniform ( 1 , 600 ) , 2 )
V = round ( random . uniform ( 0.01 , 100 ) , 2 )
a = time_long ( time )
b = volume ( V )
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称, 默认127.0.0.1
, user = ' saipo ' # 用户名
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
sql = " SELECT openid FROM dajiaouser WHERE nameid = %s "
cur = conn . cursor ( )
cur . execute ( sql , ( message , ) )
user_name_dajiao = cur . fetchall ( ) [ 0 ] [ 0 ]
if user_name_dajiao is None :
cur . close ( )
conn . close ( )
yield event . plain_result ( f " 没有找到这个人哦! " )
sql = " INSERT INTO dajiao (openid, timelong, volume) VALUES ( %s , %s , %s ) "
values = ( user_name_dajiao , time , V )
cur . execute ( sql , values )
conn . commit ( )
cur . close ( )
conn . close ( )
yield event . plain_result ( f " Hello, { get_user_name ( event . get_sender_id ( ) ) } ,你帮助 { get_user_name ( user_name_dajiao ) } 进行了一次打胶, TA坚持了 { time } s哦, { a } .射出 { V } ml, { b } ! " )
2025-04-27 03:06:27 +08:00
@filter.command ( " 我的时长成就 " )
async def timebeat ( self , event : AstrMessageEvent ) :
if isUserExist ( event . get_sender_id ( ) ) != True :
insertUser ( event . get_sender_id ( ) )
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称, 默认127.0.0.1
, user = ' saipo ' # 用户名
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
cur = conn . cursor ( )
sql = " SELECT eventTime, openid, timelong, volume FROM dajiao WHERE openid = %s AND timelong = (SELECT MAX(timelong) FROM dajiao WHERE openid = %s ) LIMIT 1 "
openid = event . get_sender_id ( )
cur . execute ( sql , ( openid , openid ) )
date1 = cur . fetchone ( )
sql2 = " SELECT eventTime, openid, timelong, volume FROM dajiao WHERE openid = %s AND timelong = (SELECT MIN(timelong) FROM dajiao WHERE openid = %s ) LIMIT 1 "
cur . execute ( sql2 , ( openid , openid ) )
date2 = cur . fetchone ( )
cur . close ( )
conn . close ( )
yield event . plain_result ( f " Hello, { get_user_name ( event . get_sender_id ( ) ) } \n 你的时长最佳记录为 { date1 [ 2 ] } s,发生在 { date1 [ 0 ] } ,射出 { date1 [ 3 ] } ml! \n 你的时长最弱记录为 { date2 [ 2 ] } s,发生在 { date2 [ 0 ] } ,射出 { date2 [ 3 ] } ml! " )
@filter.command ( " 我的产量成就 " )
async def volumebeat ( self , event : AstrMessageEvent ) :
if isUserExist ( event . get_sender_id ( ) ) != True :
insertUser ( event . get_sender_id ( ) )
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称, 默认127.0.0.1
, user = ' saipo ' # 用户名
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
cur = conn . cursor ( )
sql = " SELECT eventTime, openid, timelong, volume FROM dajiao WHERE openid = %s AND volume = (SELECT MAX(volume) FROM dajiao WHERE openid = %s ) LIMIT 1 "
openid = event . get_sender_id ( )
cur . execute ( sql , ( openid , openid ) )
date1 = cur . fetchone ( )
sql2 = " SELECT eventTime, openid, timelong, volume FROM dajiao WHERE openid = %s AND volume = (SELECT MIN(volume) FROM dajiao WHERE openid = %s ) LIMIT 1 "
cur . execute ( sql2 , ( openid , openid ) )
date2 = cur . fetchone ( )
cur . close ( )
conn . close ( )
yield event . plain_result ( f " Hello, { get_user_name ( event . get_sender_id ( ) ) } \n 你的产量最佳记录为 { date1 [ 3 ] } ml,发生在 { date1 [ 0 ] } ,时长为 { date1 [ 2 ] } s! \n 你的产量最弱记录为 { date2 [ 3 ] } ml,发生在 { date2 [ 0 ] } ,时长为 { date2 [ 2 ] } s! " )
@filter.command ( " 我的个人信息 " )
async def userinfo ( self , event : AstrMessageEvent ) :
if isUserExist ( event . get_sender_id ( ) ) != True :
insertUser ( event . get_sender_id ( ) )
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称,默认
, user = ' saipo '
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
cur = conn . cursor ( )
sql = " SELECT uid, openid , nameid FROM dajiaouser WHERE openid = %s "
openid = event . get_sender_id ( )
cur . execute ( sql , ( openid , ) )
date1 = cur . fetchone ( )
sql2 = " SELECT sum(timelong),sum(volume) FROM dajiao WHERE openid = %s group by openid "
cur . execute ( sql2 , ( openid , ) )
date2 = cur . fetchone ( )
cur . close ( )
conn . close ( )
yield event . plain_result ( f " 个人信息 \n uid: { date1 [ 0 ] } \n openid: { date1 [ 1 ] } \n name: { date1 [ 2 ] } \n 总时长: { seconds_to_hms ( date2 [ 0 ] ) } \n 总产量: { ml_to_l_ml ( date2 [ 1 ] ) } " )
@filter.command ( " 修改昵称 " )
async def updatename ( self , event : AstrMessageEvent , name : str ) :
if isUserExist ( event . get_sender_id ( ) ) != True :
insertUser ( event . get_sender_id ( ) )
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称,默认
, user = ' saipo '
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
cur = conn . cursor ( )
sql = " UPDATE dajiaouser SET nameid = %s WHERE openid = %s "
openid = event . get_sender_id ( )
cur . execute ( sql , ( name , openid ) )
conn . commit ( )
cur . close ( )
conn . close ( )
yield event . plain_result ( f " 昵称修改成功! \n 新的昵称为: { name } " )
2025-04-27 16:36:34 +08:00
@filter.command ( " 我的背包 " )
async def bag ( self , event : AstrMessageEvent ) :
if isUserExist ( event . get_sender_id ( ) ) != True :
insertUser ( event . get_sender_id ( ) )
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称,默认
, user = ' saipo '
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
cur = conn . cursor ( )
sql = " SELECT baglist FROM dajiaouser WHERE openid = %s "
openid = event . get_sender_id ( )
cur . execute ( sql , ( openid , ) )
date = cur . fetchone ( )
baglist = json . loads ( date [ 0 ] )
baglist_str = " "
2025-04-27 17:29:05 +08:00
if len ( baglist [ " baglist " ] ) == 0 :
2025-04-27 16:36:34 +08:00
baglist_str = " 背包空空如也 "
else :
2025-04-27 17:29:05 +08:00
for item in baglist [ " baglist " ] :
2025-04-27 17:11:06 +08:00
if get_tool_name ( item [ " id " ] ) is None :
2025-04-27 16:36:34 +08:00
cur . close ( )
conn . close ( )
yield event . plain_result ( f " 背包存在异常! " )
else :
2025-04-27 17:11:06 +08:00
baglist_str + = f " { get_tool_name ( item [ ' id ' ] ) } x { item [ ' num ' ] } \n "
2025-04-27 16:36:34 +08:00
cur . close ( )
conn . close ( )
yield event . plain_result ( f " 背包列表: \n { baglist_str } " )
2025-04-27 03:06:27 +08:00
2025-04-28 20:31:04 +08:00
2025-05-08 11:48:26 +08:00
@filter.command ( " 产量成就排行 " )
async def volumerank ( self , event : AstrMessageEvent ) :
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称,默认
, user = ' saipo '
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
cur = conn . cursor ( )
sql = " SELECT du.uid, du.nameid, t.max_volume, MAX(dj.eventTime) AS eventTime FROM dajiaouser du LEFT JOIN (SELECT openid, MAX(volume) AS max_volume FROM dajiao GROUP BY openid) t ON du.openid = t.openid LEFT JOIN dajiao dj ON du.openid = dj.openid AND t.max_volume = dj.volume GROUP BY du.uid, du.nameid, t.max_volume; "
cur . execute ( sql )
date = cur . fetchall ( )
ranklist = [ ]
for i in range ( len ( date ) ) :
ranklist . append ( ( date [ i ] [ 0 ] , date [ i ] [ 1 ] , date [ i ] [ 2 ] , date [ i ] [ 3 ] ) )
ranklist . sort ( key = lambda x : x [ 2 ] , reverse = True )
ranklist_str = " 产量最高排名 \n "
for i in range ( len ( ranklist ) ) :
2025-05-12 16:34:15 +08:00
ranklist_str + = f " { i + 1 } uid: { ranklist [ i ] [ 0 ] } nameid: { ranklist [ i ] [ 1 ] } 最高产量: { ranklist [ i ] [ 2 ] } ml 打胶时间: { ranklist [ i ] [ 3 ] } \n "
2025-05-08 11:48:26 +08:00
ranklist_str + = " \n "
2025-05-12 16:34:15 +08:00
sql2 = " SELECT du.uid, du.nameid, t.min_volume, MAX(dj.eventTime) AS eventTime FROM dajiaouser du LEFT JOIN (SELECT openid, MIN(volume) AS min_volume FROM dajiao GROUP BY openid) t ON du.openid = t.openid LEFT JOIN dajiao dj ON du.openid = dj.openid AND t.min_volume = dj.volume GROUP BY du.uid, du.nameid, t.min_volume; "
2025-05-08 11:48:26 +08:00
cur . execute ( sql2 )
date2 = cur . fetchall ( )
ranklist2 = [ ]
for i in range ( len ( date2 ) ) :
ranklist2 . append ( ( date2 [ i ] [ 0 ] , date2 [ i ] [ 1 ] , date2 [ i ] [ 2 ] , date2 [ i ] [ 3 ] ) )
ranklist2 . sort ( key = lambda x : x [ 2 ] )
ranklist_str + = " 产量最低排名 \n "
for i in range ( len ( ranklist2 ) ) :
2025-05-12 16:34:15 +08:00
ranklist_str + = f " { i + 1 } uid: { ranklist2 [ i ] [ 0 ] } nameid: { ranklist2 [ i ] [ 1 ] } 最低产量: { ranklist2 [ i ] [ 2 ] } ml 打胶时间: { ranklist2 [ i ] [ 3 ] } \n "
2025-05-08 11:48:26 +08:00
yield event . plain_result ( ranklist_str )
cur . close ( )
conn . close ( )
2025-05-12 16:28:25 +08:00
@filter.command ( " 时长成就排行 " )
async def timerank ( self , event : AstrMessageEvent ) :
conn = pymysql . connect ( host = ' 192.168.31.9 ' # 连接名称,默认
, user = ' saipo '
, passwd = ' Grasste0403 ' # 密码
, port = 3306 # 端口, 默认为3306
, db = ' saipo ' # 数据库名称
, charset = ' utf8 ' # 字符编码
)
cur = conn . cursor ( )
sql = " SELECT du.uid, du.nameid, t.max_timelong, MAX(dj.eventTime) AS eventTime FROM dajiaouser du LEFT JOIN (SELECT openid, MAX(timelong) AS max_timelong FROM dajiao GROUP BY openid) t ON du.openid = t.openid LEFT JOIN dajiao dj ON du.openid = dj.openid AND t.max_timelong = dj.timelong GROUP BY du.uid, du.nameid, t.max_timelong; "
cur . execute ( sql )
date = cur . fetchall ( )
ranklist = [ ]
for i in range ( len ( date ) ) :
ranklist . append ( ( date [ i ] [ 0 ] , date [ i ] [ 1 ] , date [ i ] [ 2 ] , date [ i ] [ 3 ] ) )
ranklist . sort ( key = lambda x : x [ 2 ] , reverse = True )
ranklist_str = " 时长最长排名 \n "
for i in range ( len ( ranklist ) ) :
2025-05-12 16:34:15 +08:00
ranklist_str + = f " { i + 1 } uid: { ranklist [ i ] [ 0 ] } { ranklist [ i ] [ 1 ] } 最长时长: { ranklist [ i ] [ 2 ] } s 打胶时间: { ranklist [ i ] [ 3 ] } \n "
2025-05-12 16:28:25 +08:00
ranklist_str + = " \n "
sql2 = " SELECT du.uid, du.nameid, t.min_timelong, MAX(dj.eventTime) AS eventTime FROM dajiaouser du LEFT JOIN (SELECT openid, MIN(timelong) AS min_timelong FROM dajiao GROUP BY openid) t ON du.openid = t.openid LEFT JOIN dajiao dj ON du.openid = dj.openid AND t.min_timelong = dj.timelong GROUP BY du.uid, du.nameid, t.min_timelong; "
cur . execute ( sql2 )
date2 = cur . fetchall ( )
ranklist2 = [ ]
for i in range ( len ( date2 ) ) :
ranklist2 . append ( ( date2 [ i ] [ 0 ] , date2 [ i ] [ 1 ] , date2 [ i ] [ 2 ] , date2 [ i ] [ 3 ] ) )
ranklist2 . sort ( key = lambda x : x [ 2 ] )
ranklist_str + = " 时长最短排名 \n "
for i in range ( len ( ranklist2 ) ) :
2025-05-12 16:34:15 +08:00
ranklist_str + = f " { i + 1 } uid: { ranklist2 [ i ] [ 0 ] } { ranklist2 [ i ] [ 1 ] } 最短时长: { ranklist2 [ i ] [ 2 ] } s 打胶时间: { ranklist2 [ i ] [ 3 ] } \n "
2025-05-12 16:28:25 +08:00
yield event . plain_result ( ranklist_str )
cur . close ( )
conn . close ( )
2025-05-08 11:48:26 +08:00
testNumber = 0
2025-04-27 11:29:59 +08:00
@filter.command ( " 测试 " )
2025-04-28 20:31:04 +08:00
async def test ( self , event : AstrMessageEvent ) :
2025-04-28 20:46:30 +08:00
global testNumber
2025-04-28 20:31:04 +08:00
testNumber = testNumber + 1
yield event . plain_result ( f " 累积结果: { testNumber } " )
2025-04-27 03:06:27 +08:00
2025-05-21 20:22:20 +08:00
@filter.command ( " 麦否? " )
async def yswtest ( self , event : AstrMessageEvent ) :
yield event . plain_result ( " 吃个麦麦 " )
2025-05-08 11:48:26 +08:00
2025-04-27 03:06:27 +08:00