from texas import log from texas.config import get_str_key, get_int_key, get_bool_key # Init Redis if get_bool_key("HEROKU") is True: redis = redis_lib.Redis(host=get_str_key("REDIS_URI"), port=get_str_key("REDIS_PORT"), password=get_str_key("REDIS_PASS"), decode_responses=True) bredis = redis_lib.Redis( host=get_str_key("REDIS_URI"), port=get_str_key("REDIS_PORT"), password=get_str_key("REDIS_PASS"), ) if get_bool_key("HEROKU") is False: redis = redis_lib.StrictRedis(host=get_str_key("REDIS_URI"), port=get_str_key("REDIS_PORT"), db=get_int_key("REDIS_DB_FSM"), decode_responses=True) bredis = redis_lib.StrictRedis(host=get_str_key("REDIS_URI"), port=get_str_key("REDIS_PORT"), db=get_int_key("REDIS_DB_FSM")) try: redis.ping() except redis_lib.ConnectionError: sys.exit(log.critical("Can't connect to RedisDB! Exiting..."))
from texas.versions import TEXAS_VERSION log.info("----------------------") log.info("| Texas |") log.info("----------------------") log.info("Version: " + TEXAS_VERSION) if get_bool_key("DEBUG_MODE") is True: TEXAS_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) # SpamWatch spamwatch_api = get_str_key("SW_API", required=True) sw = spamwatch.Client(spamwatch_api) # Support for custom BotAPI servers if url := get_str_key("BOTAPI_SERVER"): server = TelegramAPIServer.from_base(url) else: server = TELEGRAM_PRODUCTION # AIOGram
# This file is part of Texas (Telegram Bot) # 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 texas.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 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))
# 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 texas import log from texas.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..."))
async def check(self, message: types.Message): if message.from_user.id == get_int_key("OWNER_ID"): return True