Auto-updater player info
This commit is contained in:
parent
2baff4118e
commit
92fbf28c10
11
bot.py
11
bot.py
@ -1,10 +1,12 @@
|
|||||||
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from aiogram import executor
|
from aiogram import executor
|
||||||
|
|
||||||
from load import dp, config
|
|
||||||
import filters
|
import filters
|
||||||
import handlers
|
import handlers
|
||||||
|
from load import dp, config
|
||||||
|
from utils.updater import updater
|
||||||
|
|
||||||
skip_updates=True
|
skip_updates=True
|
||||||
|
|
||||||
@ -28,10 +30,17 @@ async def on_shutdown(dp):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
loop = asyncio.new_event_loop()
|
||||||
|
asyncio.set_event_loop(loop)
|
||||||
|
loop.create_task(updater())
|
||||||
|
|
||||||
if config["WebHook"]["use"].lower() in ["yes", "true"]:
|
if config["WebHook"]["use"].lower() in ["yes", "true"]:
|
||||||
|
# https://github.com/aiogram/aiogram/pull/795/commits/a7e0ce2971a0a320849c8b11080fa6b737b6935b
|
||||||
|
# Needed for async tasks :3
|
||||||
|
# Only for webhooks! For polling not needed patching file
|
||||||
executor.start_webhook(
|
executor.start_webhook(
|
||||||
dispatcher=dp,
|
dispatcher=dp,
|
||||||
|
loop=loop,
|
||||||
skip_updates=skip_updates,
|
skip_updates=skip_updates,
|
||||||
webhook_path="{}{}".format(config["WebHook"]["webhook_path"], config["Bot"]["token"]),
|
webhook_path="{}{}".format(config["WebHook"]["webhook_path"], config["Bot"]["token"]),
|
||||||
on_startup=on_startup,
|
on_startup=on_startup,
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from typing import Union
|
||||||
|
|
||||||
from aiogram import types
|
from aiogram import types
|
||||||
|
|
||||||
from .model import db, Users
|
from .model import db, Users
|
||||||
@ -7,7 +9,16 @@ from .model import db, Users
|
|||||||
db.create_tables([Users])
|
db.create_tables([Users])
|
||||||
|
|
||||||
|
|
||||||
def register(user: types.User, data: dict):
|
def register(user: Union[types.User, int], data: dict, task_update: bool=False):
|
||||||
|
if task_update and (Users.select().where(Users.user_id==user, Users.tag == data['tag']).exists()):
|
||||||
|
Users.update(
|
||||||
|
tag = data['tag'],
|
||||||
|
nickname = data['name'],
|
||||||
|
townhall = data['townHallLevel'],
|
||||||
|
attackwins = data['attackWins']
|
||||||
|
).where(Users.user_id == user, Users.tag == data['tag']).execute()
|
||||||
|
return
|
||||||
|
|
||||||
if not Users.select().where(Users.user_id==user.id, Users.tag == data['tag']).exists():
|
if not Users.select().where(Users.user_id==user.id, Users.tag == data['tag']).exists():
|
||||||
Users.create(
|
Users.create(
|
||||||
user_id = user.id,
|
user_id = user.id,
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
aiogram==2.19
|
aiogram==2.19
|
||||||
requests==2.27.1
|
requests==2.27.1
|
||||||
peewee==3.14.10
|
peewee==3.14.10
|
||||||
|
aioschedule==0.5.2
|
24
utils/updater.py
Normal file
24
utils/updater.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import asyncio
|
||||||
|
import aioschedule as schedule
|
||||||
|
|
||||||
|
from load import coc_api
|
||||||
|
from database.worker import get_users, register
|
||||||
|
|
||||||
|
|
||||||
|
async def check_update():
|
||||||
|
users = get_users()
|
||||||
|
if users is None:
|
||||||
|
return
|
||||||
|
for user in users:
|
||||||
|
user_id = user["user_id"]
|
||||||
|
tag = user['tag']
|
||||||
|
data = coc_api.get_player(tag)
|
||||||
|
register(user_id, data, task_update=True)
|
||||||
|
|
||||||
|
|
||||||
|
async def updater():
|
||||||
|
schedule.every(1).hour.do(check_update)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
await schedule.run_pending()
|
||||||
|
await asyncio.sleep(5)
|
Loading…
Reference in New Issue
Block a user