[nonebot2]QQ机器人签到插件


前言

本插件基于nonebot框架进行创作
作者萌新源
包结构

qiandao
	|__init.py
	|login.py
	|read.py
	|write.py
	

一、使用命令及方法

##1.使用命令

签到

##2.使用方法
放入plugins文件夹内即可

二、代码部分

1.完整代码

代码如下:

1.init.py

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)))


2.login.py(用于记录签到时间和判断是否签到)

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

3.read.py(用于数据读取)

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

4.write.py (用于数据的写入)

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)

2.配套插件

配套插件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

总结

本插件可以和任何其他插件配套使用


QQ群签到系统 v4.0更新: 新增连续签到和随机签到奖励。  QQ群签到系统实现QQ群签到功能功能,能够帮助用户在QQ群签到。 QQ群签到系统特点介绍: 1. 过滤重复签到——群员发送签到语,机器人自动提示签到顺位,每位群员一天内只能签到一次。 2. 自定义签到词——群主可自定义签到词,如设置"我来了",则当群员发送"我来了"即可实现签到。 3. 自定义签到提示——当成员发送签到语以后,系统自动发送签到成功的提示,提示内容可自定义。 4. 自定义签到时间——群主可自定义签到时间,如设置每天在8:00-20:00签到有效,则其余时间无效。 5. 自定义签到名额——群主可设置每天的签到有效名额,如果设置为0,则表示不限制签到名额。 6. 积分和等级规则——群主可以自定义不同签到顺位的积分,以及根据累计积分设置不同等级称号。 7. 个人签到记录查询——可在后台查询本人在某个月的每天签到记录,记录包括签到时间和签到顺位。 8. 群员签到记录查询——可在后台查询本群所有成员某一天的签到全记录,包括签到人,时间和顺位。 操作说明: 1. 在官方网站下载qq群签到系统。 2. 打开选项设置进行各项功能设置。 3. 输入您的qq号和密码启动系统。 4. 告知您的群员签到词内容是什么。 5. 群员在群内发送签到词即可签到。 温馨提示: 1. 申请一个新QQ号,将其加到您的群,用此QQ登陆签到系统,这样不影响您的主QQ号正常聊天。 2. 当您在不同地方使用机器人时,切记把Set.ini,Point.ini随同软件一起打包,Set.ini保存了您的所有设置,Point.ini保存您的群成员当前积分。
功能简介: 1. 过滤重复签到——群员发送签到语,机器人自动提示签到顺位,每位群员一天内只能签到一次。 2. 自定义签到词——群主可自定义签到词,如设置"我来了",则当群员发送"我来了"即可实现签到。 3. 自定义签到提示——当成员发送签到语以后,系统自动发送签到成功的提示,提示内容可自定义。 4. 自定义签到时间——群主可自定义签到时间,如设置每天在8:00-20:00签到有效,则其余时间无效。 5. 自定义签到名额——群主可设置每天的签到有效名额,如果设置为0,则表示不限制签到名额。 6. 积分和等级规则——群主可以自定义不同签到顺位的积分,以及根据累计积分设置不同等级称号。 7. 个人签到记录查询——可在后台查询本人在某个月的每天签到记录,记录包括签到时间和签到顺位。 8. 群员签到记录查询——可在后台查询本群所有成员某一天的签到全记录,包括签到人,时间和顺位。 操作说明: 1. 在官方网站下载QQ群签到系统。 2. 打开选项设置进行各项功能设置。 3. 输入您的QQ号和密码启动系统。 4. 告知您的群员签到词内容是什么。 5. 群员在群内发送签到词即可签到。 温馨提示: 1. 申请一个新QQ号,将其加到您的群,用此QQ登陆签到系统,这样不影响您的主QQ号正常聊天。 2. 当您在不同地方使用机器人时,切记把Set.ini,Point.ini随同软件一起打包,Set.ini保存了您的所有设置,Point.ini保存您的群成员当前积分。 签到记录查询后台网址:http://www.qqgroup.cn (注:后台显示有一分钟延时,如8点15分签到,则8点16分以后才能在后台查询到这条签到记录,但是群里面是实时显示的)
功能简介: 1. 过滤重复签到——群员发送签到语,机器人自动提示签到顺位,每位群员一天内只能签到一次。 2. 自定义签到词——群主可自定义签到词,如设置"我来了",则当群员发送"我来了"即可实现签到。 3. 自定义签到提示——当成员发送签到语以后,系统自动发送签到成功的提示,提示内容可自定义。 4. 自定义签到时间——群主可自定义签到时间,如设置每天在8:00-20:00签到有效,则其余时间无效。 5. 自定义签到名额——群主可设置每天的签到有效名额,如果设置为0,则表示不限制签到名额。 6. 积分和等级规则——群主可以自定义不同签到顺位的积分,以及根据累计积分设置不同等级称号。 7. 月累计签到奖励——群员每个月累计签到一定的天数可以获得月累计奖励,群主可自行设置奖励。 8. 连续签到奖励——群员连续签到5天,10天,15天,20天,依次类推,可以获得连续签到奖励。 9. 随机签到奖励——群主可每天设置一个随机名次,当某个群员正好是这个名次签到可获得随机奖励。 10.签到记录不清零——重启软件后,当天的签到名次不会还原从零开始,而是接着重启前的名次排序。 11.个人签到记录查询——可在后台查询本人在某个月的每天签到记录,记录包括签到时间和签到顺位。 12.群员签到记录查询——可在后台查询本群所有成员某一天的签到全记录,包括签到人,时间和顺位。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值