本插件基于nonebot框架进行创作
作者萌新源
包结构
qiandao
|__init.py
|login.py
|read.py
|write.py
##1.使用命令
签到
##2.使用方法
放入plugins文件夹内即可
代码如下:
from nonebot import on_regex
from nonebot.typing import T_State
from nonebot.adapters.onebot.v11 import GroupMessageEvent,Bot,Message
from .read import notice2, read_data
from .login import notice,search
from .write import write_file
import time
import json
import random
qd = on_regex(pattern = r'^签到$')
@qd.handle()
async def lj(bot: Bot, event: GroupMessageEvent, state: T_State):
coints = random.randint(1,100)
qq_id = str(event.user_id)
local_time = time.localtime(event.time)
login_time = time.strftime('%d',local_time)
file_name = 'coints.json'
with open(file_name) as f:
data_user = json.load(f)
if qq_id in data_user:#判断用户是不是第一次签到
await read_data(coints,qq_id,login_time) #首次使用签到功能需要先执行一次签到
lovelive_send = await notice()
else:
await read_data(coints,qq_id,login_time) #首次使用签到功能需要先执行一次签到
lovelive_send = await notice2()
# at_ = f"[CQ:at,qq={event.get_user_id()}]"
await qd.send(Message(str(lovelive_send)))
import json
from .write import write_file
send = 0
async def search(coint,qq,time):
file_name = 'coints.json'
with open(file_name) as f:
data_user = json.load(f)
last_time = data_user[f'{qq}login']
global send
if time == last_time:
send = '你已经签到过了,明天再来吧'
else:
send = f'签到成功,获得{coint}个金币'
await write_file(coint,qq,False,data_user,time)
async def notice():
news = send
return news
import json
import time
from .write import write_file#调用写入模块
from .login import search
send = 1
async def read_data(coint,qq,time):
file_name = 'coints.json'
global send
try:
with open(file_name) as f:
data_user = json.load(f)
if qq in data_user:#判断用户是不是第一次签到
await search(coint,qq,time)
else:
await write_file(coint,qq,True,data_user,time)
send = f'签到成功,获得{coint}个金币'
except FileNotFoundError:
data = {'null':0}
with open(file_name,'w') as f:
json.dump(data,f)
with open(file_name) as f:
data_2 = json.load(f)
await write_file(coint,qq,True,data_2,time)
async def notice2():
news = send
return news
import json
async def write_file(coint,qq,first,file_read,time):
if first == True:
file_name = 'coints.json'
data = dict(file_read)
data2 = {str(qq):coint,f'{qq}login':time}
data.update(data2)
print(data)
with open(file_name,'w') as f:
json.dump(data,f)
else:
file_name = 'coints.json'
data = dict(file_read)
qq_str = str(qq)
print(data)
coints = data[f'{qq_str}']
data[f'{qq_str}'] = int(coints) + int(coint)
data[f'{qq_str}login'] = str(time)
print(data)
with open(file_name,'w') as f:
json.dump(data,f)
配套插件search.py(用于查询用户金币余额)
使用指令
我的钱包
from nonebot import on_regex
from nonebot.typing import T_State
from nonebot.adapters.onebot.v11 import GroupMessageEvent,Bot,Message
import json
qd = on_regex(pattern = r'^我的钱包$')
@qd.handle()
async def lj(bot: Bot, event: GroupMessageEvent, state: T_State):
qq_id = str(event.user_id)
await search_qq(qq_id)
# at_ = f"[CQ:at,qq={event.get_user_id()}]"
lovelive_send = await notice()
await qd.send(Message(str(lovelive_send)))
send = 0
async def search_qq(qq):
global send
file_name = 'coints.json'
with open(file_name) as f:
data_user = json.load(f)
money = data_user[f'{qq}']
send = f'您的金币共有{money}个'
async def notice():
news = send
return news
本插件可以和任何其他插件配套使用