Qbot4.连接mysql/限制使用次数
Posted zstar-_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qbot4.连接mysql/限制使用次数相关的知识,希望对你有一定的参考价值。
该项目计划长期进行维护更新,欢迎star:https://github.com/zstar1003/Qbot
前言
将智能机器人引入Q群的初衷是辅助回答问题,比如有人经常会在群内问一些很基础简单的问题,此时完全可以由智能Ai代为回答。
然而,在实际过程中,发现问答方向往往走偏,无聊群友常常带着猎奇的心态来“调戏"机器人,大幅占用了资源,让正经提问的人抢不到机会。因此,解决方案就是引入mysql数据库进行管理,并对每个账号的使用次数加以限制,暂定为一天使用3次。
数据表设计
数据表设定为4个字段:
- qq_no:用户QQ号,设为主键用以区别
- TextChance:问答功能使用次数
- PicChance:图像生成功能使用次数(预留接口,图像生成后续开发)
- Message:用户发送的所有信息
主要功能
初始化
初始化,即给数据表中的每个用户给予三次文字机会
import pymysql
def init_user():
conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", database="qbot")
cur = conn.cursor()
sql_order = 'UPDATE `group` SET TextChance = 3'
cur.execute(sql_order)
conn.commit()
cur.close()
conn.close()
添加新用户
添加新用户,每个用户给予三次机会
def insert_user(qq_no, message):
conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", database="qbot")
cur = conn.cursor()
sql_order = 'INSERT INTO `group` (qq_no, TextChance, PicChance, Message) VALUES ("%s", 3, 3, "%s")' % (qq_no, message)
cur.execute(sql_order)
conn.commit()
cur.close()
conn.close()
用户信息更新
保存用户发送的信息,机会-1
def update_user(qq_no, message):
conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", database="qbot")
cur = conn.cursor()
# 文字次数减1
sql_order = 'UPDATE `group` SET TextChance = TextChance - 1 WHERE qq_no = %s' % qq_no
cur.execute(sql_order)
conn.commit()
# 信息内容拼接
sql_order = 'UPDATE `group` SET Message = CONCAT(Message,";%s") WHERE qq_no = %s' % (message, qq_no)
cur.execute(sql_order)
conn.commit()
cur.close()
conn.close()
查询用户文字次数
查询用户剩余次数
def select_TextChance(qq_no):
conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", database="qbot")
cur = conn.cursor()
sql_order = 'select TextChance from `group` WHERE qq_no = %s' % qq_no
cur.execute(sql_order)
result = cur.fetchone()
cur.close()
conn.close()
return result[0]
清空用户的文字次数
清空次数,在用户发送违规信息时调用
def clear_user(qq_no):
conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", database="qbot")
cur = conn.cursor()
sql_order = 'UPDATE `group` SET TextChance = 0 WHERE qq_no = %s' % qq_no
cur.execute(sql_order)
conn.commit()
cur.close()
conn.close()
查询当前用户是否已经存在
用来作为用户发送信息之前的判断
def user_isexist(qq_no):
conn = pymysql.connect(host="localhost", port=3306, user="root", password="123", database="qbot")
cur = conn.cursor()
sql_order = 'select * from `group` where qq_no = "%s"' % qq_no
result = cur.execute(sql_order)
conn.commit()
cur.close()
conn.close()
if result == 0:
return False
else:
return True
以上是关于Qbot4.连接mysql/限制使用次数的主要内容,如果未能解决你的问题,请参考以下文章