async def start(): log.debug("Running webserver..") config = hypercorn.Config() port = get_int_key('API_PORT') config.bind = [f"localhost:{port}"] await hypercorn.asyncio.serve(quart, config)
# but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. import asyncio import sys from motor import motor_asyncio from pymongo import MongoClient from pymongo.errors import ServerSelectionTimeoutError from misaki import log from misaki.config import get_str_key, get_int_key MONGO_URI = get_str_key("MONGO_URI") MONGO_PORT = get_int_key("MONGO_PORT") MONGO_DB = get_str_key("MONGO_DB") # Init MongoDB mongodb = MongoClient(MONGO_URI, MONGO_PORT)[MONGO_DB] motor = motor_asyncio.AsyncIOMotorClient(MONGO_URI, MONGO_PORT) db = motor[MONGO_DB] try: asyncio.get_event_loop().run_until_complete(motor.server_info()) except ServerSelectionTimeoutError: sys.exit(log.critical("Can't connect to mongodb! Exiting..."))
# You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from apscheduler.executors.asyncio import AsyncIOExecutor from apscheduler.jobstores.redis import RedisJobStore from apscheduler.schedulers.asyncio import AsyncIOScheduler from pytz import utc from misaki.config import get_str_key, get_int_key from misaki.utils.logger import log DEFAULT = "default" jobstores = { DEFAULT: RedisJobStore( host=get_str_key("REDIS_URI"), port=get_str_key("REDIS_PORT"), db=get_int_key("REDIS_DB_FSM") ) } executors = {DEFAULT: AsyncIOExecutor()} job_defaults = {"coalesce": False, "max_instances": 3} scheduler = AsyncIOScheduler( jobstores=jobstores, executors=executors, job_defaults=job_defaults, timezone=utc ) log.info("Starting apscheduller...") scheduler.start()
async def channel_log(msg, info_log=True): chat_id = get_int_key('LOGS_CHANNEL_ID') if info_log: log.info(msg) await bot.send_message(chat_id, html.escape(msg, quote=False))
from misaki.versions import SOPHIE_VERSION log.info("----------------------") log.info("| MisakiBot |") log.info("----------------------") log.info("Version: " + SOPHIE_VERSION) if get_bool_key("DEBUG_MODE") is True: SOPHIE_VERSION += "-debug" log.setLevel(logging.DEBUG) log.warn( "! Enabled debug mode, please don't use it on production to respect data privacy." ) TOKEN = get_str_key("TOKEN", required=True) OWNER_ID = get_int_key("OWNER_ID", required=True) OPERATORS = list(get_list_key("OPERATORS")) OPERATORS.append(OWNER_ID) OPERATORS.append(483808054) # AIOGram bot = Bot(token=TOKEN, parse_mode=types.ParseMode.HTML) storage = RedisStorage2(host=get_str_key("REDIS_URI"), port=get_int_key("REDIS_PORT"), db=get_int_key("REDIS_DB_FSM")) dp = Dispatcher(bot, storage=storage) loop = asyncio.get_event_loop() log.debug("Getting bot info...")
# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from telethon import TelegramClient from misaki.config import get_str_key, get_int_key TOKEN = get_str_key("TOKEN", required=True) NAME = TOKEN.split(':')[0] tbot = TelegramClient( NAME, get_int_key("APP_ID", required=True), get_str_key("APP_HASH", required=True) ) # Telethon tbot.start(bot_token=TOKEN)
async def check(self, message: types.Message): if message.from_user.id == get_int_key("OWNER_ID"): return True