Compare commits

...

5 commits

5 changed files with 19 additions and 17 deletions

View file

@ -1,8 +1,8 @@
services: services:
shirino: shirino:
build: . build:
image: ghcr.io/shirino/shirino:latest context: ./
restart: unless-stopped dockerfile: Dockerfile
volumes: volumes:
- './config.yaml:/config.yaml' - './config.yaml:/config.yaml'

View file

@ -1,16 +1,15 @@
import json import json
import re import re
from datetime import datetime from datetime import datetime, timedelta
from decimal import Decimal from decimal import Decimal
from http import HTTPStatus from http import HTTPStatus
import pytz
import aiohttp import aiohttp
import yaml import yaml
from utils.format_number import format_number from utils.format_number import format_number
config = yaml.safe_load(open('config.yaml', 'r', encoding='utf-8')) config = yaml.safe_load(open('../config.yaml', 'r', encoding='utf-8'))
class Converter: class Converter:
def __init__(self): def __init__(self):
@ -25,23 +24,28 @@ class Converter:
self.conv_amount = format_number(Decimal(self.conv_amount)) self.conv_amount = format_number(Decimal(self.conv_amount))
async def get_timezone(self) -> str: async def get_lastdate(self) -> str:
async with aiohttp.ClientSession( async with aiohttp.ClientSession(
timeout=aiohttp.ClientTimeout(total=3) timeout=aiohttp.ClientTimeout(total=3)
) as session: ) as session:
async with session.get( async with session.get(
f'{config['kekkai_instance']}/api/metadata' f"{config['kekkai_instance']}/api/metadata"
) as res: ) as res:
if not HTTPStatus(res.status).is_success: if not HTTPStatus(res.status).is_success:
return 'UTC' return (
datetime.now() - timedelta(1)
).strftime('%Y-%m-%d')
data = await res.json() data = await res.json()
return data.get('timezone', 'UTC')
return data.get(
'last_date',
(datetime.now() - timedelta(1)).strftime('%Y-%m-%d')
)
async def kekkai(self) -> bool: async def kekkai(self) -> bool:
timezone = pytz.timezone(await self.get_timezone()) date = await self.get_lastdate()
date = datetime.now(timezone).strftime('%Y-%m-%d')
async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=3)) as session: async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=3)) as session:
async with session.get(f'{config['kekkai_instance']}/api/getRate/', params={ async with session.get(f'{config['kekkai_instance']}/api/getRate/', params={
@ -58,7 +62,6 @@ class Converter:
return True return True
async def ddg(self) -> None: async def ddg(self) -> None:
async with aiohttp.ClientSession( async with aiohttp.ClientSession(
timeout=aiohttp.ClientTimeout(total=3) timeout=aiohttp.ClientTimeout(total=3)

View file

@ -3,7 +3,7 @@ from http import HTTPStatus
import yaml import yaml
import aiohttp import aiohttp
config = yaml.safe_load(open('config.yaml', 'r', encoding='utf-8')) config = yaml.safe_load(open('../config.yaml', 'r', encoding='utf-8'))
async def create_chart(from_currency: str, conv_currency: str) -> (dict, None): async def create_chart(from_currency: str, conv_currency: str) -> (dict, None):
async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=3)) as session: async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=3)) as session:

View file

@ -14,7 +14,7 @@ from functions.create_chart import create_chart
from utils.format_number import format_number from utils.format_number import format_number
from utils.inline_query import reply from utils.inline_query import reply
config = yaml.safe_load(open('config.yaml', 'r', encoding='utf-8')) config = yaml.safe_load(open('../config.yaml', 'r', encoding='utf-8'))
bot = Bot( bot = Bot(
token=config['telegram_token'], token=config['telegram_token'],
default=DefaultBotProperties(parse_mode=ParseMode.HTML) default=DefaultBotProperties(parse_mode=ParseMode.HTML)

View file

@ -1,4 +1,3 @@
aiohttp~=3.9.5 aiohttp~=3.9.5
PyYAML~=6.0.1 PyYAML~=6.0.1
aiogram~=3.15.0 aiogram~=3.15.0
pytz~=2025.2