diff --git a/__init__.py b/__init__.py index 0819eb53..98d98520 100644 --- a/__init__.py +++ b/__init__.py @@ -153,34 +153,27 @@ async def _(bot:HoshinoBot, ev: CQEvent): #每日零点半进行米游社签到 @sv.scheduled_job('cron', hour='0',minute="30") +@daily_sign.scheduled_job('cron', hour='0', minute="30") +async def _(): + await dailysign() + + async def dailysign(): - dailysign() - -def dailysign(): - async def sign_thread(): - conn = sqlite3.connect('ID_DATA.db') - c = conn.cursor() - cursor = c.execute( - "SELECT * FROM NewCookiesTable WHERE StatusB != ?", ("off",)) - c_data = cursor.fetchall() - - count = 0 - for row in c_data: - count += 1 - - im = await sign(str(row[0])) - if row[4] == "on": - await bot.send_private_msg(user_id = row[2],message = im) - else: - await bot.send_group_msg(group_id = row[4],message = f"[CQ:at,qq={row[2]}]" + "\n" + im) - - if count == 10: - count = 0 - time.sleep(30) - - t = threading.Thread(target=lambda: asyncio.run(sign_thread())) - t.setDaemon(True) - t.start() + (bot,) = nonebot.get_bots().values() + conn = sqlite3.connect('ID_DATA.db') + c = conn.cursor() + cursor = c.execute( + "SELECT * FROM NewCookiesTable WHERE StatusB != ?", ("off",)) + c_data = cursor.fetchall() + for row in c_data: + im = await sign(str(row[0])) + if row[4] == "on": + await bot.call_api(api='send_private_msg', + user_id=row[2], message=im) + else: + await bot.call_api( + api='send_group_msg', group_id=row[4], message=f"[CQ:at,qq={row[2]}]\n{im}") + await asyncio.sleep(7) #每隔半小时检测树脂是否超过设定值 @sv.scheduled_job('interval', minutes=30) diff --git a/getDB.py b/getDB.py index 6ef88d27..6db3ea43 100644 --- a/getDB.py +++ b/getDB.py @@ -149,6 +149,10 @@ def deletecache(): c.execute("DROP TABLE CookiesCache") c.execute("UPDATE NewCookiesTable SET Extra = ? WHERE Extra=?",(None,"limit30")) copyfile("ID_DATA.db", "ID_DATA_bak.db") + c.execute('''CREATE TABLE IF NOT EXISTS CookiesCache + (UID TEXT PRIMARY KEY, + MYSID TEXT, + Cookies TEXT);''') conn.commit() conn.close() except: @@ -185,21 +189,35 @@ def cacheDB(uid,mode = 1,mys = None): if len(c_data)==0: if mode == 2: conn.create_function("REGEXP", 2, functionRegex) - cursor = c.execute("SELECT * FROM NewCookiesTable WHERE REGEXP(Cookies, ?) AND Extra != ?",(uid,"error")) + cursor = c.execute("SELECT * FROM NewCookiesTable WHERE REGEXP(Cookies, ?)",(uid,)) d_data = cursor.fetchall() elif mode == 1: - cursor = c.execute("SELECT * FROM NewCookiesTable WHERE UID = ? AND Extra != ?",(uid,"error")) + cursor = c.execute("SELECT * FROM NewCookiesTable WHERE UID = ?",(uid,)) d_data = cursor.fetchall() - - if len(d_data)!=0: - use = d_data[0][1] - if mode == 1: - c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,UID) \ - VALUES (?, ?)",(use,uid)) - elif mode == 2: - c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,MYSID) \ - VALUES (?, ?)",(use,uid)) + + if len(d_data) !=0 : + if d_data[0][7] != "error": + use = d_data[0][1] + if mode == 1: + c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,UID) \ + VALUES (?, ?)",(use,uid)) + elif mode == 2: + c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,MYSID) \ + VALUES (?, ?)",(use,uid)) + else: + cookiesrow = c.execute("SELECT * FROM NewCookiesTable WHERE Extra IS NULL ORDER BY RANDOM() LIMIT 1") + e_data = cookiesrow.fetchall() + if len(e_data) != 0: + if mode == 1: + c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,UID) \ + VALUES (?, ?)",(e_data[0][1],uid)) + elif mode == 2: + c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,MYSID) \ + VALUES (?, ?)",(e_data[0][1],uid)) + use = e_data[0][1] + else: + return "没有可以使用的Cookies!" else: cookiesrow = c.execute("SELECT * FROM NewCookiesTable WHERE Extra IS NULL ORDER BY RANDOM() LIMIT 1") e_data = cookiesrow.fetchall()