87 lines
2.0 KiB
Python
Executable File
87 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import logging
|
|
|
|
from load import dp, bot, scheduler
|
|
|
|
from aiohttp.web_app import Application
|
|
from aiohttp.web import run_app
|
|
from aiogram.webhook.aiohttp_server import (
|
|
SimpleRequestHandler,
|
|
setup_application
|
|
)
|
|
|
|
|
|
# import filters
|
|
import config
|
|
|
|
|
|
# dp.filters_factory.bind(filters.AvaibleRolesFilter)
|
|
# dp.filters_factory.bind(filters.ReplayMessageFilter)
|
|
|
|
# import handlers
|
|
|
|
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
|
|
|
|
WEBAPP_HOST = '127.0.0.1'
|
|
WEBAPP_PORT = 3001
|
|
|
|
# Don`t touch anything!
|
|
WEBHOOK_HOST = f'http://{WEBAPP_HOST}:{WEBAPP_PORT}'
|
|
WEBHOOK_PATH = f'/bot{config.token}/'
|
|
WEBHOOK_URL = f"{WEBHOOK_HOST}{WEBHOOK_PATH}"
|
|
|
|
|
|
async def on_startup():
|
|
from utils.notify_start import notify_started_bot, database_is_empty
|
|
|
|
DATABASE_EMPTY = database_is_empty()
|
|
if DATABASE_EMPTY:
|
|
await bot.send_message(
|
|
config.second_group_id,
|
|
"Member table is empty, run: `!reload`", parse_mode="Markdown"
|
|
)
|
|
|
|
await notify_started_bot(bot)
|
|
|
|
from utils.default_commands import set_default_commands
|
|
await set_default_commands(bot)
|
|
|
|
# Reloading users data
|
|
from utils import reload_users_data
|
|
scheduler.add_job(reload_users_data, "interval", seconds=config.update_interval)
|
|
scheduler.start()
|
|
|
|
from load import tgc
|
|
await tgc.client.start()
|
|
|
|
await bot.set_webhook(WEBHOOK_URL)
|
|
|
|
|
|
async def on_shutdown():
|
|
await bot.delete_webhook()
|
|
|
|
# Close Redis connection.
|
|
await dp.storage.close()
|
|
await bot.session.close()
|
|
|
|
|
|
def main() -> None:
|
|
dp.startup.register(on_startup)
|
|
dp.shutdown.register(on_shutdown)
|
|
|
|
if config.USE_WEBHOOK:
|
|
app = Application()
|
|
app["bot"] = bot
|
|
SimpleRequestHandler(
|
|
dispatcher=dp,
|
|
bot=bot,
|
|
).register(app, path=WEBHOOK_PATH)
|
|
setup_application(app, dp, bot=bot)
|
|
run_app(app, host=WEBAPP_HOST, port=WEBAPP_PORT)
|
|
else:
|
|
dp.run_polling()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|