2025-11-14 04:03:20 +00:00
|
|
|
import sys
|
|
|
|
|
import logging
|
2025-11-14 04:03:20 +00:00
|
|
|
import argparse
|
2025-11-14 04:03:20 +00:00
|
|
|
import asyncio
|
2026-03-04 23:33:17 +00:00
|
|
|
import json
|
2025-11-14 04:03:20 +00:00
|
|
|
|
2026-03-08 02:28:07 +00:00
|
|
|
from db.constants import TIMELINE_ORDER_ISSUED, TIMELINE_ORDER_NOT_ISSUED
|
2025-11-14 04:03:20 +00:00
|
|
|
from scheduling import OrderScheduler
|
2026-03-04 23:33:17 +00:00
|
|
|
from generate import generate_order
|
2026-04-14 03:14:05 +00:00
|
|
|
from orders import order_issue, order_check, punishment_issue
|
|
|
|
|
from db.queries import orders_pool_by_id, order_status_by_id
|
2025-11-16 16:34:52 +00:00
|
|
|
from telegram.telegram import handle_commands
|
|
|
|
|
from telegram.commands import commands
|
2026-04-14 03:14:05 +00:00
|
|
|
from util import make_session
|
2025-11-14 04:03:20 +00:00
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
2026-03-10 02:39:32 +00:00
|
|
|
async def do_order_issue(orders_pool_id):
|
|
|
|
|
orders_pool = orders_pool_by_id(orders_pool_id)
|
2026-03-04 23:33:17 +00:00
|
|
|
|
2026-04-14 02:20:46 +00:00
|
|
|
await order_issue(orders_pool)
|
2026-03-04 23:33:17 +00:00
|
|
|
|
2026-04-14 03:14:05 +00:00
|
|
|
async def do_punishment_issue(order_status_id):
|
|
|
|
|
order_status = order_status_by_id(order_status_id)
|
|
|
|
|
|
|
|
|
|
async with make_session() as session:
|
|
|
|
|
await punishment_issue(session, order_status)
|
|
|
|
|
|
2025-11-14 04:03:20 +00:00
|
|
|
if __name__=='__main__':
|
2025-11-14 04:03:20 +00:00
|
|
|
logging.basicConfig(
|
|
|
|
|
format="%(asctime)s %(module)s [%(levelname)-4.4s] %(message)s",
|
|
|
|
|
handlers=[
|
|
|
|
|
logging.StreamHandler(sys.stdout)
|
|
|
|
|
],
|
|
|
|
|
level=logging.INFO)
|
|
|
|
|
|
2025-11-14 04:03:20 +00:00
|
|
|
parser = argparse.ArgumentParser(description="Generate gear orders", prog='PROG')
|
|
|
|
|
|
|
|
|
|
subparsers = parser.add_subparsers(help="Sub-command help", dest="command")
|
|
|
|
|
|
2026-03-04 23:33:17 +00:00
|
|
|
parser_generate = subparsers.add_parser('generate', help='Generate a command')
|
|
|
|
|
parser_generate.add_argument('orders_pool_id')
|
|
|
|
|
|
|
|
|
|
parser_issue = subparsers.add_parser('issue', help='Issue a command')
|
|
|
|
|
parser_issue.add_argument('orders_pool_id')
|
|
|
|
|
|
|
|
|
|
parser_issue = subparsers.add_parser('check', help='Check on the status of an order')
|
|
|
|
|
parser_issue.add_argument('order_status_id')
|
2025-11-14 04:03:20 +00:00
|
|
|
|
2026-04-14 03:14:05 +00:00
|
|
|
parser_punish = subparsers.add_parser('punish', help="Punish an order")
|
|
|
|
|
parser_punish.add_argument('order_status_id')
|
|
|
|
|
|
2025-11-14 04:03:20 +00:00
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
2026-03-04 23:33:17 +00:00
|
|
|
if args.command == 'generate':
|
|
|
|
|
orders_pool = orders_pool_by_id(args.orders_pool_id)
|
|
|
|
|
|
|
|
|
|
logger.info('Orders - %s', json.dumps(generate_order(orders_pool)))
|
|
|
|
|
elif args.command == 'issue':
|
2025-11-14 04:03:20 +00:00
|
|
|
loop = asyncio.new_event_loop()
|
2026-03-04 23:33:17 +00:00
|
|
|
loop.run_until_complete(
|
|
|
|
|
do_order_issue(args.orders_pool_id)
|
|
|
|
|
)
|
2025-11-14 04:03:20 +00:00
|
|
|
elif args.command == 'check':
|
|
|
|
|
loop = asyncio.new_event_loop()
|
2026-03-04 23:33:17 +00:00
|
|
|
loop.run_until_complete(
|
|
|
|
|
order_check(args.order_status_id)
|
|
|
|
|
)
|
2026-04-14 03:14:05 +00:00
|
|
|
elif args.command == 'punish':
|
|
|
|
|
loop = asyncio.new_event_loop()
|
|
|
|
|
loop.run_until_complete(
|
|
|
|
|
do_punishment_issue(args.order_status_id)
|
|
|
|
|
)
|
2025-11-14 04:03:20 +00:00
|
|
|
else:
|
|
|
|
|
loop = asyncio.new_event_loop()
|
|
|
|
|
s = OrderScheduler(loop)
|
2025-11-16 16:34:52 +00:00
|
|
|
loop.run_until_complete(handle_commands(
|
|
|
|
|
commands=commands,
|
|
|
|
|
loop=loop
|
|
|
|
|
))
|
2025-11-14 04:03:20 +00:00
|
|
|
loop.run_forever()
|