예제 #1
0
async def move_in_tips(tips_id):
    sql_select = ('SELECT tips FROM ust WHERE id=?;')
    tip = sql_exe(sql_select, (tips_id, ))[0][0]

    sql_insert = ('INSERT INTO tips VALUES (NULL, ?)')

    sql_exe(sql_insert, (tip, ))
예제 #2
0
async def cancel(session: CommandSession):
    answer = session.get('answer')

    sql = ('DELETE FROM cmd WHERE Q=?;')
    sql_exe(sql, (answer, ))

    session.finish(f'已取消指令<{11}>')
예제 #3
0
def user_registration(ctx):
    user_id = ctx['sender']['user_id']
    user_nickname = ctx['sender']['nickname']
    user_card = ctx.get('sender').get('_card') if ctx.get('sender').get(
        '_card') else 'NULL'

    sql_insert = ('INSERT INTO user VALUES (' 'NULL, ?, ?, ?, ?, ?, ?, ?);')

    sql_args = (user_id, user_nickname, user_card, 0, 0, 0, '2019-01-01')

    sql_exe(sql_insert, sql_args)
예제 #4
0
async def already_exists(submit_tip):
    sql = ('SELECT tips FROM tips;')
    tips = sql_exe(sql)

    sql2 = ('SELECT tips FROM ust;')
    tips2 = sql_exe(sql2)

    if submit_tip in tips or submit_tip in tips2:
        return False
    else:
        return True
예제 #5
0
async def audit(tips_id, audit_bool):
    if audit_bool == '好':
        sql_update = ('UPDATE ust SET audit=1 WHERE id=?;')

        sql_exe(sql_update, (tips_id, ))

        return True
    else:
        sql_update = ('DELETE FROM ust WHERE id=?;')

        sql_exe(sql_update, (tips_id, ))

        return False
예제 #6
0
async def delete_ust(user_id, tips_id):
    if await cuprum(user_id, 1):
        sql_select = ('select ? from ust where id=? limit 1;')
        values = sql_exe(sql_select, (tips_id, tips_id))

        if values:
            sql_delete = ('DELETE FROM ust WHERE user_id=? and id=?;')
            sql_exe(sql_delete, (user_id, tips_id))
            return '删除成功'
        else:
            return '失败, id不存在'
    else:
        return '铜币不足'
예제 #7
0
async def _():
    bot = nonebot.get_bot()
    sql_select = (
        'SELECT group_id, live_id FROM subscription WHERE platform = "jjwxc";')
    lis = sql_exe(sql_select)

    for i in lis:
        group_id = i[0]
        book_id = i[1]

        state, book_info = await get_book_info(book_id)

        if not book_cache.get(group_id):
            book_cache[group_id] = {}

        if not book_cache.get(group_id).get(book_id):
            book_cache.get(group_id)[book_id] = book_info[
                'chapter_id']  # id初始化
        else:
            if book_info['chapter_id'] > book_cache.get(group_id).get(book_id):
                # id更新并大于缓存中的id
                title = book_info['title']
                chapter_id = book_info['chapter_id']
                chapter_title = book_info['chapter_title']
                chapter_desc = book_info['chapter_desc']
                book_cache.get(group_id)[book_id] = book_info['chapter_id']
                msg = f'{title}更新了第{chapter_id}章:{chapter_title}-{chapter_desc}'
                print(msg)
                await bot.send_group_msg(group_id=group_id, message=msg)

        await asyncio.sleep(2)
예제 #8
0
파일: __init__.py 프로젝트: zhufree/strings
async def _():
    sql = (
        'SELECT group_id, deadline FROM deadline;'
    )
    values = sql_exe(sql)

    now_date = timestamp2date_string(time.time())

    for value in values:
        group_id = value[0]
        deadline = value[1]

        ny, nm, nd = map(int, now_date.split('-'))
        dy, dm, dd = map(int, deadline.split('-'))

        d1 = datetime.datetime(ny, nm, nd)
        d2 = datetime.datetime(dy, dm, dd)

        interval = d2 - d1

        if interval.days < 0:
            bot = nonebot.get_bot()
            url = 'https://jinser.xyz/2020/02/22/%E5%85%B3%E4%BA%8E%E6%94%B6%E8%B4%B9%E5%92%8Ctoken/'
            await bot.send_group_msg(group_id=group_id, message=f'试用期已过, 如�延期请访问 {url} 查看详情')
            try:
                await bot.set_group_leave(group_id=group_id)
            except ActionFailed as e:
                bot.send_private_msg(user_id=2301583973, message=str(e))
예제 #9
0
def enable_group() -> Union[List[set], None]:
    sql_check = ('SELECT group_id FROM setting WHERE bool=?;')
    enable_group_list = sql_exe(sql_check, (0, ))
    if enable_group_list:
        return enable_group_list
    else:
        return
예제 #10
0
async def _(session: NoticeSession):
    ctx = session.ctx
    if ctx['sub_type'] == 'invite' and ctx['user_id'] == ctx['self_id']:
        await session.send('大家好')

        bot = session.bot
        ctx = session.ctx
        group_id = ctx['group_id']

        sql = (
            'SELECT deadline FROM deadline WHERE group_id=?'
        )
        deadline = sql_exe(sql, (group_id,))
        now_date = timestamp2date_string(ctx['time'])

        if deadline:
            deadline = deadline[0][0]
            ny, nm, nd = map(int, now_date.split('-'))
            dy, dm, dd = map(int, deadline.split('-'))

            d1 = datetime.datetime(ny, nm, nd)
            d2 = datetime.datetime(dy, dm, dd)

            interval = d2 - d1

            if interval.days < 0:
                await session.send('试用期已过, 将在五分钟后退群, @我说 token ,并输入相应的token可延长使用时间, 详情请查看: '
                                   'https://jinser.xyz/2020/02/22/%E5%85%B3%E4%BA%8E%E6%94%B6%E8%B4%B9%E5%92%8Ctoken/')
                await asyncio.sleep(300)
                # 退群
                await bot.set_group_leave(group_id=group_id)
        else:
            sql_insert2 = (
                'INSERT OR IGNORE INTO deadline VALUES (NULL, ?, ?);'
            )
            # +3天
            add_date = datetime.timedelta(days=3)

            ny, nm, nd = map(int, now_date.split('-'))
            d1 = datetime.datetime(ny, nm, nd)
            deadline = d1 + add_date
            deadline = deadline.strftime("%Y-%m-%d")

            sql_exe(sql_insert2, (group_id, deadline))
    else:
        await session.send('欢迎')
예제 #11
0
파일: cuprum.py 프로젝트: zhufree/strings
async def cuprum(user_id, num=None):
    try:
        sql_select = ('SELECT user_coin FROM user WHERE user_id=?;')

        values = sql_exe(sql_select, (user_id, ))[0][0]

        if values - num < 0:
            return False
        else:
            updated_num = values - num
            sql_update = ('UPDATE user SET user_coin=? WHERE user_id=?;')

            sql_exe(sql_update, (updated_num, user_id))

            return num
    except IndexError:
        return '请先注册'
예제 #12
0
파일: cuprum.py 프로젝트: zhufree/strings
async def get_cuprum(user_id):
    try:
        sql_select = ('SELECT user_coin FROM user WHERE user_id=?;')

        coin = sql_exe(sql_select, (user_id, ))[0][0]

        return coin
    except IndexError:
        return
예제 #13
0
def user_registration_interval_judgment(user_id):
    sql_select = (f"select 1 from user where user_id = ? limit 1;")

    values = sql_exe(sql_select, (user_id, ))

    if values:
        return False
    else:
        return True
예제 #14
0
def check_in_interval_judgment(user_id):
    sql_select = (f'select * from user where user_id=?;')

    data = sql_exe(sql_select, (user_id, ))
    data = data[0]

    if data[7] == datetime.today().strftime('%Y-%m-%d'):
        return False
    else:
        return True
예제 #15
0
async def _(session: NLPSession):
    msg = session.ctx.get('message')
    msg = str(msg)
    ctx_group_id = session.ctx.get('group_id')

    pattern = re.compile(r'^添加问(.*)答(.*)$')
    # pattern_global = re.compile(r'^全局添加问(.*)答(.*)$')
    boo = pattern.match(str(msg))
    # boo_global = pattern_global.match(str(msg))

    if boo:
        if boo.group(1) and boo.group(2):
            cmd = 'add_cmd'
        elif boo.group(2):
            cmd = 'cancel'
            return IntentCommand(100,
                                 cmd,
                                 args={
                                     'answer': boo.group(2),
                                     'group_id': ctx_group_id
                                 })
        else:
            cmd = 'empty_finish'
        return IntentCommand(100,
                             cmd,
                             args={
                                 'question': boo.group(1),
                                 'answer': boo.group(2),
                                 'group_id': ctx_group_id
                             })

    # if boo_global:
    #     user_id = session.ctx.get('sender').get('user_id')
    #     if user_id == 2301583973 or user_id == 963949236:
    #         if boo_global.group(1) and boo_global.group(2):
    #             cmd = 'add_cmd'
    #         else:
    #             cmd = 'empty_finish'
    #         return IntentCommand(100, cmd,
    #                              args={'question': boo_global.group(1), 'answer': boo_global.group(2), 'group_id': 1})
    # else:
    #     return IntentCommand(100, 'finish')

    sql = ('SELECT A, group_id FROM cmd WHERE Q=?;')
    cmd = sql_exe(sql, (msg, ))

    if cmd:
        print('-' * 20)
        cmd = cmd[0]
        answer = cmd[0]
        group_id = cmd[1]
        if group_id == ctx_group_id or group_id == 1:
            return IntentCommand(100, 'user_cmd', args={'answer': answer})
예제 #16
0
파일: process.py 프로젝트: zhufree/strings
def verify(token):
    sql = ('SELECT duration FROM token WHERE token=?;')
    boo = sql_exe(sql, (token, ))

    # TODO 入群验证token
    #  1. 入群前验证 content
    #  2. 私聊回复token后向分享群 机器人主动加入 被邀请的全部拒绝

    if boo:
        return boo
    else:
        return
예제 #17
0
def chick_in(user_id: int):
    data = get_chick_info(user_id)
    user_coin = data[4]
    user_favor = data[5]
    chick_in_days = data[6]

    up_user_coin = coin_algorithm(user_favor, user_coin)
    up_user_favor = favor_algorithm(chick_in_days, user_favor)
    up_chick_in_days = chick_in_days + 1
    up_last_chick_in_time = datetime.today().strftime("%Y-%m-%d")

    sql_update = ('UPDATE user SET '
                  'user_coin = ?,'
                  f'user_favor = ?,'
                  f'chick_in_days = ?,'
                  f'last_chick_in_time = ? '
                  f'WHERE user_id = ?;')
    sql_args = (up_user_coin, up_user_favor, up_chick_in_days,
                up_last_chick_in_time, user_id)

    sql_exe(sql_update, sql_args)
예제 #18
0
async def audit_ust():
    try:
        sql_select = ('select * from ust where audit=0 limit 1;')

        values = sql_exe(sql_select)[0]

        aud_id = values[0]
        values = 'id: ' + str(aud_id) + '  ' + values[4] + '  ' + values[5]

        return values, aud_id
    except IndexError:
        return '', None
예제 #19
0
async def card_choice(session: CommandSession):
    path = 'data/image'

    file_list = os.listdir(path)

    ch = random.choice(file_list)

    ch_id = ch.split('_')[0]

    sql = ('INSERT INTO draw VALUES (NULL, ?, ?, ?, ?);')

    ctx = session.ctx
    user_id = ctx['sender']['user_id']
    user_nickname = ctx['sender']['nickname']
    card = ctx.get('sender').get('_card')

    args = (user_id, user_nickname, card, ch_id)
    sql_exe(sql, args)
    # TODO 第一次抽卡时用 INSERT, 后续需要 UPDATE

    await session.send(ch)
예제 #20
0
async def get_ust_msg(user_id, nah=True):
    try:
        if nah:
            sql_select = ('SELECT * FROM ust WHERE user_id=? and audit=?;')
            data = sql_exe(sql_select, (user_id, 0))
        else:
            sql_select = ('SELECT * FROM ust WHERE user_id=?;')
            data = sql_exe(sql_select, (user_id, ))

        data = [i for i in data]

        user_nickname = data[0][2]

        msg = ['id: ' + str(x[0]) + '  ' + x[4] + '  ' + x[5] for x in data]
        msg = [''.join(y) for y in msg]

        text = '\n'.join(msg)
        text = user_nickname + '\n' + text

        return text
    except IndexError:
        return '审核队列中无数据'
예제 #21
0
async def submit_ust(tips, user_id):
    if await cuprum(user_id, 20):
        try:
            sql_select = ('SELECT * FROM user WHERE user_id=?;')

            data = sql_exe(sql_select, (user_id, ))[0]

            user_nickname = data[2]
            user_card = data[3]

            sql_insert = ('INSERT INTO ust VALUES (NULL, ?, ?, ?, ?, ?, ?)')

            params = (user_id, user_nickname, user_card, tips,
                      datetime.today().strftime("%Y-%m-%d"), 0)

            sql_exe(sql_insert, params)
        except IndexError:
            return '提交失败, 请先注册(输入"注册")'

        return '提交成功, 审核中'
    else:
        return '铜币不足'
예제 #22
0
async def modify_ust(tips, user_id, tips_id):
    if await cuprum(user_id, 5):
        try:
            sql_select = ('SELECT * FROM ust WHERE user_id=?')

            user_id_for_verify = sql_exe(sql_select, (user_id, ))
            user_id_for_verify = [i[0] for i in user_id_for_verify]

            if int(tips_id) in user_id_for_verify:
                sql_select2 = ('SELECT * FROM ust WHERE id=?')
                values = sql_exe(sql_select2, (tips_id, ))[0]
                before = values[4]

                sql_update = ('UPDATE ust SET tips=? WHERE id = ?;')
                sql_exe(sql_update, (tips, tips_id))

                return f'修改成功, {before} -> {tips}'
            else:
                return '请检查id是否正确'
        except sqlite3.OperationalError:
            return '当前没有审核中的tips'
    else:
        return '铜币不足'
예제 #23
0
async def _():
    bot = nonebot.get_bot()

    sql_select = (
        'SELECT group_id, live_id, platform FROM subscription;'
    )
    lis = sql_exe(sql_select)

    for i in lis:
        group_id = i[0]
        live_id = i[1]
        platform = i[2]

        state, live_dict = await get_bili_live(live_id)

        if not live_cache.get(group_id):
            live_cache[group_id] = []

        # 如果直播间在直播且不在直播缓存列表中
        if state == 1 and live_id not in live_cache.get(group_id):
            live_cache.get(group_id).append(live_id)  # 加入直播缓存列表

            # 格式化msg 并发送
            title = live_dict['title']
            img = live_dict['img']
            uname = live_dict['uname']

            msg = f'{title}\n{uname} 开播了\n{platform} | https://live.bilibili.com/{live_id}'

            boo = await bot.can_send_image()
            boo = boo['yes']

            if boo:
                msg = f'[CQ:image,file={img}]' + msg
            else:
                msg = img + '\n' + msg

            await bot.send_group_msg(group_id=group_id, message=msg)
        # 如果不在直播
        elif state == 0:
            try:
                # 尝试从直播缓存列表中删除该直播间
                live_cache.get(group_id).remove(live_id)
            except (ValueError, AttributeError):
                pass

        await asyncio.sleep(2)
예제 #24
0
def get_chick_info(user_id: int):
    sql_select = (f'select * from user where user_id=?;')

    data = sql_exe(sql_select, (user_id, ))

    return data[0]
예제 #25
0
from sqlite3 import OperationalError

# import datetime
#
# import asyncio
# from random import randint

try:
    sql1 = (
        'CREATE TABLE token('
        'id INTEGER PRIMARY KEY AUTOINCREMENT,'
        'token TEXT NOT NULL,'
        'duration INT NOT NULL'
        ');'
    )
    sql_exe(sql1)
except OperationalError:
    pass

try:
    sql2 = (
        'CREATE TABLE deadline('
        'id INTEGER PRIMARY KEY AUTOINCREMENT,'
        'group_id INT NOT NULL,'
        'deadline TEXT NOT NULL'
        ');'
    )
    sql_exe(sql2)
except OperationalError:
    pass
예제 #26
0
    async def process(self):
        """
        合并处理图片
        创建文字框架
        写入文字信息
        嵌入图标框架
        :return: 处理后的图片
        """
        w = 640
        size = self._small_size

        # 创建白色画布
        target = Image.new('RGBA', (640, 640), (0, 0, 0, 0))
        # 贴上高斯模糊后的图片
        target.paste(await self.gaussian_blur())

        # 创建小图标的框架
        framework = Image.open('./data/framework.png').convert('L')
        framework = framework.resize((size + 30, size + 30))
        target_l = Image.new('RGBA', (size + 30, size + 30), (0, 0, 0, 0))
        target_l.putalpha(framework)

        # 贴上小图标的框架
        target.paste(target_l,
                     (w // 2 - size // 2 - 15, w // 2 - size // 2 - 50 - 15),
                     target_l)

        # 在原图中间 y-50 的位置贴上小图标
        target.paste(await self.alpha_circle(),
                     (w // 2 - size // 2, w // 2 - size // 2 - 50), await
                     self.alpha_circle())

        # 创建文字框架
        txt_frame = Image.new('RGBA', (540, 160), (0, 0, 0, 190))
        # 贴上文字框架
        target.paste(txt_frame, (50, 425), txt_frame)

        # 指定文字, 文字的字体和位置
        txt = self._txt.split('\n')
        font = ImageFont.truetype('./data/REEJI-HonghuangLiGB-SemiBold-2.ttf',
                                  24)
        pix = (255, 255, 255)
        count = 0
        for i in txt:
            text_size = font.getsize(i)
            where = ((self._image.size[0] - text_size[0]) / 2,
                     (self._image.size[1] - text_size[1]) / 2 + 125 +
                     30 * count)

            # 写入文字
            draw = ImageDraw.Draw(target)
            draw.text(where, i, pix, font=font)

        count += 1

        sql_select = (
            'SELECT tips FROM tips WHERE LENGTH(tips) <= 15 ORDER BY RANDOM() limit 1;'
        )

        values = sql_exe(sql_select)
        values = str(values[0][0])

        # 写入tips
        draw = ImageDraw.Draw(target)
        font = ImageFont.truetype('./data/REEJI-HonghuangLiGB-SemiBold-2.ttf',
                                  18)
        writer_size = font.getsize(values)
        pix = (230, 230, 230)
        draw.text(((self._image.size[0] - writer_size[0]) / 2, 585 - 26),
                  values.replace('\n', ''),
                  pix,
                  font=font)

        return target
예제 #27
0
async def get_ust(user_id, tips_id):
    sql_select = ('SELECT * FROM ust WHERE id=? and user_id=?')
    values = sql_exe(sql_select, (tips_id, user_id))[0]

    return values[4]
예제 #28
0
from sql_exe import *
from sqlite3 import OperationalError

import re

sql_create = ('CREATE TABLE cmd('
              'id INTEGER PRIMARY KEY AUTOINCREMENT,'
              'user_id INT NOT NULL,'
              'user_nickname TEXT NOT NULL,'
              'user_card TEXT,'
              'group_id INT,'
              'Q TEXT NOT NULL,'
              'A TEXT NOT NULL'
              ');')
try:
    sql_exe(sql_create)
except OperationalError:
    pass


@on_command('add_cmd')
async def add_cmd(session: CommandSession):
    question = session.get('question')
    answer = session.get('answer')
    group_id = session.get('group_id')

    sender = session.ctx['sender']
    user_id = sender['user_id']
    user_nickname = sender['nickname']
    user_card = sender.get('user_card')
예제 #29
0
async def add_cmd(session: CommandSession):
    question = session.get('question')
    answer = session.get('answer')
    group_id = session.get('group_id')

    sender = session.ctx['sender']
    user_id = sender['user_id']
    user_nickname = sender['nickname']
    user_card = sender.get('user_card')

    #  **暂时停用**

    base_cmd = [
        'yyy', '嘤一下', '嘤一个', '来嘤', 'kusa', '草', 'robot', '机屑人', 'string',
        '五十弦', 'mua', 'mua~', 'zaima', 'nihao', 'wei,zaima', 'wei,zaima',
        'nihao', '你好', '泥嚎', 'help', '怎么用', '怎么玩', '签到', '注册'
    ]
    name_list = ['五十弦', '弦', 'hello', 'Hello', 'hi', 'Hi']
    if question in base_cmd:
        session.finish('与内置指令冲突🔧')
    elif question in name_list:
        session.finish(f'{question}不能作为指令,但是可以用{question}来叫我')

    sql_select = ('SELECT Q FROM cmd WHERE group_id=?;')
    q_list = sql_exe(sql_select, (group_id, ))
    if q_list:
        if (question, ) in q_list:
            sql_select_question = (
                'SELECT A FROM cmd WHERE Q=? AND group_id=?;')
            b_answer = sql_exe(sql_select_question, (question, group_id))[0]

            # msg = session.ctx.get('message')
            # msg = str(msg)
            # if b_group_id == 1 and msg[:2] == '全局':
            #     user_id = session.ctx.get('sender').get('user_id')
            #     if user_id == 2301583973 or user_id == 963949236:
            #         sql_rewrite = (
            #             'UPDATE cmd SET A=? WHERE Q=?;'
            #         )
            #         sql_exe(sql_rewrite, (answer, question))
            #
            #         session.finish(f'已覆盖原全局指令回答<{b_answer}>\n当前指令:\n<Q>{question}</Q>\n<A>{answer}</A>')
            #     else:
            #         session.finish('与全局指令冲突')
            # elif b_group_id == 1:
            #     user_id = session.ctx.get('sender').get('user_id')
            #     if not user_id == 2301583973 or not user_id == 963949236:
            #         session.finish('与全局指令冲突')

            sql_rewrite = ('UPDATE cmd SET A=? WHERE Q=? AND group_id=?;')
            sql_exe(sql_rewrite, (answer, question, group_id))

            session.finish(
                f'已覆盖原指令回答<{b_answer[0]}>\n当前指令:\n<Q>{question}</Q>\n<A>{answer}</A>'
            )

    sql_insert = ('INSERT INTO cmd VALUES (NULL, ?, ?, ?, ?, ?, ?);')
    sql_exe(sql_insert,
            (user_id, user_nickname, user_card, group_id, question, answer))

    # if group_id == 1:
    #     await session.send(f'⬈全局添加成功➾\n<Q>{question}</Q>\n<A>{answer}</A>')
    # else:
    await session.send(f'⬈添加成功➾\n<Q>{question}</Q>\n<A>{answer}</A>')
예제 #30
0
from nonebot import CommandGroup, CommandSession
from sql_exe import *
from sqlite3 import OperationalError
import os
import random

try:
    sql_init = ('CREATE TABLE draw('
                'id INTEGER PRIMARY KEY AUTOINCREMENT,'
                'user_id INT NOT NULL,'
                'user_nickname TEXT NOT NULL,'
                'user_card TEXT,'
                'cards TEXT'
                ');')
    sql_exe(sql_init)
except OperationalError:
    pass

__plugin_name__ = '抽卡'
__plugin_usage__ = """借用塔罗, 图一乐

指令: 单抽 / 十连 / 仓库"""

cg = CommandGroup('_card', only_to_me=False)


@cg.command('choice', aliases=['单抽'])
async def card_choice(session: CommandSession):
    path = 'data/image'

    file_list = os.listdir(path)