Something went wrong. Try again.
rewriting velascobot from scratch
Something went wrong. Try again.
velascobot2 main.py
2.4 kB · 86 lines
Python
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687import asyncioimport loggingfrom pathlib import Path
import clickimport coloredlogsimport tomllib
from velascobot2.bot import Botfrom velascobot2.messenger import Messenger
logger = logging.getLogger(__name__)
def load_config(config_path: Path | None) -> dict: assert config_path is not None with open(config_path, "rb") as f: return tomllib.load(f)
def run_bot(bot: Bot) -> None: asyncio.run(bot.wake_up()) bot.app.run_polling(poll_interval=0.5) assert "@" + bot.app.bot.username == bot.messenger.username
@click.command()@click.option( "--config", type=click.Path(exists=True, path_type=Path), default="./config.toml", help="path to config.toml file (default: ./config.toml)",)@click.option("--token", help="telegram bot token (overrides config file)")def main(config: Path | None, token: str | None) -> None: if not token and not (config and config.exists()): raise click.UsageError( "must provide either --token, --config or a valid config file " "at ./config.toml" ) cfg = load_config(config)
bot_name = "Telegram Bot" if token: bot_token = token else: bot_token = cfg["bot"]["token"]
bot_name = cfg.get("messenger", {}).get("name", bot_name) bosses = cfg.get("messenger", {}).get("bosses", []) nicknames = cfg.get("messenger", {}).get("nicknames", []) reply = cfg.get("messenger", {}).get("reply", 0.1) repeat = cfg.get("messenger", {}).get("repeat", 0.05) wake_up = cfg.get("messenger", {}).get("wake_up", False) mute_time = cfg.get("messenger", {}).get("mute_time", 120) max_len = cfg.get("messenger", {}).get("max_len", 50)
motd_chats = cfg.get("bot", {}).get("motd_chats", []) motd_list = cfg.get("bot", {}).get("motd_list", []) whitelist = cfg.get("bot", {}).get("whitelist", None)
log_format = ( "[{}][%(asctime)s]%(name)s::%(levelname)s:%(message)s" ).format(bot_name.upper())
coloredlogs.install(level=logging.INFO, fmt=log_format)
messenger = Messenger( bot_name, bosses, nicknames, reply, repeat, wake_up, mute_time=mute_time, max_len=max_len, )
bot = Bot( messenger, bot_token, motd_chats, motd_list, whitelist, testing=False ) run_bot(bot)
if __name__ == "__main__": main()