Exemple #1
0
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, ReplyKeyboardRemove
from aiogram.utils import executor
from sqlalchemy import select
from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm import Session

import database
import orm

BOT_TOKEN = os.getenv('BOT_TOKEN')
if not BOT_TOKEN:
    sys.exit(
        "No bot token was found in ENV. Set 'BOT_TOKEN' variable to your token from @BotFather"
    )
bot = Bot(BOT_TOKEN)
dispatcher = Dispatcher(
    bot, storage=MemoryStorage())  # TODO: Consider using more advanced storage

NEWS_TOKEN = os.getenv('NEWS_TOKEN')
if not NEWS_TOKEN:
    sys.exit(
        "No NewsAPI token was found in ENV. Set 'NEWS_TOKEN' variable to your token from NewsAPI"
    )


class TopicSetter(StatesGroup):
    process_topics = State()


class LocationSetter(StatesGroup):
    process_location = State()
        lph.pool_info_map['BNB.FSN-E14'].status = PoolInfo.ENABLED
        lph.pool_info_map['BNB.RAVEN-F66'].status = PoolInfo.BOOTSTRAP

        lph.pool_info_map['BTC.BTC'] = PoolInfo('BTC.BTC', 18555, 18555, 100,
                                                18555 * 100,
                                                PoolInfo.BOOTSTRAP)

        await notifier_pool_churn.on_data(
            ppf, None)  # must notify about changes above ^^^
        await notifier_pool_churn.on_data(ppf,
                                          None)  # no update at this moment!


async def main(d):
    await send_to_channel_test_message(d)


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO)

    d = DepContainer()
    d.loop = asyncio.get_event_loop()
    d.cfg = Config()
    d.db = DB(d.loop)

    bot = Bot(token=d.cfg.telegram.bot.token, parse_mode=ParseMode.HTML)
    dp = Dispatcher(bot, loop=d.loop)
    loc_man = LocalizationManager()

    asyncio.run(main(d))
Exemple #3
0
# partially from https://github.com/aiogram/bot
from aiogram import Bot, Dispatcher, types

from app.config import load_config
from app.models.config import Config
from app.utils.log import Logger

logger = Logger(__name__)
current_config = load_config()

bot = Bot(current_config.bot_token, parse_mode=types.ParseMode.HTML)
dp = Dispatcher(bot, storage=current_config.storage.create_storage())


def setup(config: Config):
    from app import filters
    from app import middlewares
    from app.utils import executor
    logger.debug(f"As application dir using: {config.app_dir}")

    middlewares.setup(dp, config)
    filters.setup(dp, config)
    executor.setup(config)

    logger.info("Configure handlers...")
    # noinspection PyUnresolvedReferences
    import app.handlers
Exemple #4
0
import asyncio

from aiogram import Bot, Dispatcher, executor
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from config import BOT_TOKEN, PROXY, admin_id, uc_chat_id
from crl import *


DELAY = 24*3600

loop = asyncio.get_event_loop()
bot = Bot(token=BOT_TOKEN, parse_mode="HTML")
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage, loop=loop)


async def schedule(wait_time):
	while True:
		answer = await crl_to_tlgrm()
		for crl in answer.values():
			if 'ALERT' in crl:
				await bot.send_message(chat_id=uc_chat_id, text=f'<b>{crl}</b>', parse_mode='HTML')
			elif crl == '':
				await bot.send_message(chat_id=uc_chat_id, text=f'404 файл не найден!!!', parse_mode='HTML')
			else:
				await bot.send_message(chat_id=uc_chat_id, text=f'<b>{crl}</b>', parse_mode='HTML')
		await asyncio.sleep(wait_time)

	
if __name__ == '__main__':
	from handlers import *
Exemple #5
0
import asyncio
import logging

from aiogram import Bot
from aiogram import Dispatcher
from aiogram.contrib.fsm_storage.redis import RedisStorage2

from bot.middlewares.language_middleware import setup_middleware
from config import TOKEN

# from aiogram.contrib.fsm_storage.memory import MemoryStorage

logging.basicConfig(
    format=
    u'%(filename)s [LINE:%(lineno)d] #%(levelname)-8s [%(asctime)s]  %(message)s',
    level=logging.INFO)
loop = asyncio.get_event_loop()
# Set up storage (either in Redis or Memory)
# storage = MemoryStorage()
storage = RedisStorage2()

bot = Bot(token=TOKEN, loop=loop, parse_mode="HTML")
dp = Dispatcher(bot, storage=storage)

# Setup i18n middleware
i18n = setup_middleware(dp)

# Alias for gettext method
_ = i18n.gettext
Exemple #6
0
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy.engine import Engine
from sqlalchemy import create_engine
from aiogram import Bot, Dispatcher
from dynaconf import Dynaconf

settings: Dynaconf = Dynaconf(
    env='development',  # change to 'production' if production
    settings_files=['app/settings.toml', 'app/.secrets.toml'],
    environments=True)

bot: Bot = Bot(settings.TOKEN)
storage: MemoryStorage = MemoryStorage()
dp: Dispatcher = Dispatcher(bot, storage=storage)

engine: Engine = create_engine('sqlite:///app/app.db', echo=True)
Session = sessionmaker(bind=engine)
session: Session = Session()
Base = declarative_base()
        with open("config.json", "r") as fh:
            raw_data = fh.read()
        config = load_json(raw_data)
    except Exception as e:
        print("Could not open config. Error: " + str(e))


if __name__ == "__main__":
    """
    Main is located on top because decorators need a dispatcher object, which is created here
    """
    load_config()

    if config:
        bot = Bot(token=config["BOT_TOKEN"])
        bot_dispatcher = Dispatcher(bot)


@bot_dispatcher.message_handler(commands=["start", "help"])
async def welcome_handler(message: types.Message) -> None:
    """Sends welcome message on /start command"""
    await message.reply(config["WELCOME_MESSAGE"])


@bot_dispatcher.message_handler()
async def search_handler(message: types.Message) -> None:
    """
    Checks if sent message is a EN Wiki article and sends the result back.
    """
    try:
        url = urlparse(message.text)
Exemple #8
0
from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.redis import RedisStorage2
from os import getenv
from sys import exit

token = getenv("BOT_TOKEN", None)
if not token:
    exit("No bot token provided, exiting...")

# Initialize bot and dispatcher
bot = Bot(token=token, parse_mode="HTML", validate_token=True)
dp = Dispatcher(bot, storage=RedisStorage2(host="redis"))
Exemple #9
0
import asyncio
from main import config


# импорт хендлеров

# import documentation.handlers

# import deadlines.handlers
# import questions.handlers


loop = asyncio.get_event_loop()
bot = Bot(config.API_KEY, parse_mode="HTML")
dispatcher = Dispatcher(bot, loop=loop, storage=MemoryStorage())


def main():
    executor.start_polling(dispatcher, on_startup=on_start_message, on_shutdown=on_finish_message)


if __name__ == "__main__":
    from main.handlers import dispatcher, on_start_message, on_finish_message
    from documentation.handlers import show_documentation
    from deadlines.handlers import show_calendar_menu, create_event
    from questions.handlers import question_menu, other_questions, ask_new_question
    from main.helpers.registration import enter_email
    from admin.handlers import check_new_workers
    main()
Exemple #10
0
    def __init__(self, bot_token: str, database_file: str):
        self._bot: Bot = Bot(token=bot_token)
        self.dispatcher: Dispatcher = Dispatcher(bot=self._bot)
        self._database_file = database_file

        self._setup_handlers()
Exemple #11
0
import logging

from aiogram import Bot, Dispatcher, executor, types
from aiogram.bot import api

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)

# TODO: раскомментировать если у вас ошибка подключения к ``api.telegram.org``
# Подмена базового URL для запросов
# PATCHED_URL = "https://telegg.ru/orig/bot{token}/{method}"
# setattr(api, 'API_URL', PATCHED_URL)

# Создать глобального бота
bot = Bot(token='XXX', )
dp = Dispatcher(bot=bot, )


@dp.message_handler(commands=['help', 'help2'])
async def send_menu(message: types.Message):
    """ Отправить список команд бота
    """
    await message.reply(
        text='''
Мои команды:
/help -- увидеть это сообщение

бла бла
''',
        reply=False,
    )
Exemple #12
0

class CreateUserMiddleware(BaseMiddleware):
    cached_user_ids = []

    async def on_pre_process_message(self, message: types.Message, *args):
        if message.from_user.id not in self.cached_user_ids:
            await create_user(message.from_user, chat_type=message.chat.type)
            self.cached_user_ids.append(message.from_user.id)


if __name__ == "__main__":
    if config.SENTRY_DSN:
        sentry_sdk.init(config.SENTRY_DSN)

    dp = Dispatcher(bot, loop=asyncio.get_event_loop())
    dp.middleware.setup(CreateUserMiddleware())

    dp.register_message_handler(handlers.start,
                                commands=["start", "help", "ajuda", "ayuda"])

    dp.register_message_handler(handlers.language, commands=["language"])
    dp.register_callback_query_handler(
        handlers.set_language,
        lambda query: query.data in config.AVAILABLE_LANGUAGES,
    )

    dp.register_message_handler(handlers.projects,
                                commands=["projects", "project"])
    dp.register_callback_query_handler(
        handlers.set_project,
Exemple #13
0
async def create_bot_dispatcher(bot: Bot, storage: BaseStorage,
                                vpn_service: VPNService, config) -> Dispatcher:
    authorized = AndFilter(
        ChatTypeFilter(ChatType.PRIVATE),
        GroupMemberFilter(await bot.get_chat(config["users_group_id"])))

    dispatcher = Dispatcher(bot=bot, storage=storage)

    devices_cb = CallbackData("device", "id", "action")

    @dispatcher.errors_handler()
    async def error_handler(update: Update, exc: BaseException):
        if update.message is not None:
            chat_id = update.message.from_user.id
        elif update.callback_query is not None:
            chat_id = update.callback_query.from_user.id

        log.exception(f"Bot failed to handle update from {chat_id}",
                      exc_info=exc)

        keyboard_markup = InlineKeyboardMarkup(row_width=2)
        keyboard_markup.add(
            InlineKeyboardButton("<< Back", callback_data="list"))
        await bot.send_message(
            chat_id,
            "Oh sorry! 😞 There is error occurred. Please contact administrator to solve this problem.",
            parse_mode="markdown",
            reply_markup=keyboard_markup)

        if update.message is not None:
            await update.message.delete()
        elif update.callback_query is not None:
            await update.callback_query.message.delete()
            await update.callback_query.answer()

    @dispatcher.message_handler(authorized, commands=["start", "restart"])
    @dispatcher.callback_query_handler(authorized,
                                       lambda query: query.data == 'list',
                                       state="*")
    async def list_handler(event: Union[Message, CallbackQuery],
                           state: FSMContext):
        await state.finish()

        if isinstance(event, Message):
            await event.delete()

        devices = await vpn_service.list_devices(event.from_user.id)
        keyboard_markup = InlineKeyboardMarkup(row_width=2)
        keyboard_markup.add(
            InlineKeyboardButton("➕ Add new device", callback_data="add"),
            InlineKeyboardButton("🔄 Refresh", callback_data="list"))
        keyboard_markup.add(*(InlineKeyboardButton(
            device.name,
            callback_data=devices_cb.new(id=device.id, action="details"))
                              for device in devices))
        await bot.send_message(event.from_user.id,
                               "Choose one of your devices."
                               if devices else "You have no devices.",
                               reply_markup=keyboard_markup)

        if isinstance(event, CallbackQuery):
            await event.message.delete()
            await event.answer()

    @dispatcher.callback_query_handler(authorized,
                                       lambda query: query.data == 'add')
    async def add_handler(query: CallbackQuery, state: FSMContext):
        keyboard_markup = InlineKeyboardMarkup(row_width=2)
        keyboard_markup.add(
            InlineKeyboardButton("<< Back", callback_data="list"))
        if await vpn_service.has_device_quota(query.from_user.id):
            await state.set_state("device_name")
            message = await bot.send_message(query.from_user.id,
                                             f"Enter new device name:",
                                             reply_markup=keyboard_markup)
            async with state.proxy() as data:
                data['message_id'] = message.message_id
        else:
            await bot.send_message(
                query.from_user.id,
                f"Can't add more than *{vpn_service.get_device_quota()}* devices",
                parse_mode="markdown",
                reply_markup=keyboard_markup)

        await query.message.delete()
        await query.answer()

    @dispatcher.message_handler(authorized,
                                lambda message: message.text,
                                state="device_name")
    async def device_name_handler(message: Message, state: FSMContext):
        keyboard_markup = InlineKeyboardMarkup(row_width=2)
        keyboard_markup.add(
            InlineKeyboardButton("<< Back", callback_data="list"))
        try:
            device = await vpn_service.create_device(message.from_user.id,
                                                     message.text.strip())
        except DeviceDuplicatedError:
            await message.answer(
                f"Device named *{message.text.strip()}* already exists.",
                parse_mode="markdown",
                reply_markup=keyboard_markup)
        else:
            await message.answer(
                f"Device named *{device.name}* successfully created.",
                parse_mode="markdown",
                reply_markup=keyboard_markup)

        await message.delete()
        async with state.proxy() as data:
            await bot.delete_message(message.from_user.id,
                                     int(data['message_id']))
        await state.finish()

    @dispatcher.callback_query_handler(authorized,
                                       devices_cb.filter(action="details"))
    @dispatcher.callback_query_handler(authorized,
                                       devices_cb.filter(action="config"))
    async def details_handler(query: CallbackQuery):
        cb_data = devices_cb.parse(query.data)
        action = cb_data["action"]
        device_id = cb_data["id"]
        device = await vpn_service.get_device(query.from_user.id, device_id)

        keyboard_markup = InlineKeyboardMarkup(row_width=2)
        keyboard_markup.add(
            InlineKeyboardButton("Get config",
                                 callback_data=devices_cb.new(
                                     id=device_id, action="config")),
            InlineKeyboardButton("✖️ Remove",
                                 callback_data=devices_cb.new(
                                     id=device_id, action="remove")),
            InlineKeyboardButton("<< Back", callback_data="list"))

        if action == "config":
            with await vpn_service.generate_device_config(
                    query.from_user.id, device_id) as config_stream:
                await bot.send_document(query.from_user.id,
                                        config_stream,
                                        caption=f"*{device.name}* config",
                                        parse_mode="markdown",
                                        reply_markup=keyboard_markup)
        else:
            await bot.send_message(query.from_user.id,
                                   f"What to do with device *{device.name}*?",
                                   parse_mode="markdown",
                                   reply_markup=keyboard_markup)

        await query.message.delete()
        await query.answer()

    @dispatcher.callback_query_handler(authorized,
                                       devices_cb.filter(action="remove"))
    async def remove_handler(query: CallbackQuery):
        device_id = devices_cb.parse(query.data)["id"]
        device = await vpn_service.get_device(query.from_user.id, device_id)

        keyboard_markup = InlineKeyboardMarkup(row_width=2)
        keyboard_markup.add(
            InlineKeyboardButton("✖️ Remove",
                                 callback_data=devices_cb.new(
                                     id=device_id, action="confirm_removal")),
            InlineKeyboardButton("<< Back",
                                 callback_data=devices_cb.new(
                                     id=device_id, action="details")))
        await bot.send_message(
            query.from_user.id,
            f"Are you sure to remove device *{device.name}*?",
            parse_mode="markdown",
            reply_markup=keyboard_markup)

        await query.message.delete()
        await query.answer()

    @dispatcher.callback_query_handler(
        authorized, devices_cb.filter(action="confirm_removal"))
    async def confirm_removal_handler(query: CallbackQuery):
        device_id = devices_cb.parse(query.data)["id"]
        device = await vpn_service.remove_device(query.from_user.id, device_id)

        keyboard_markup = InlineKeyboardMarkup(row_width=2)
        keyboard_markup.add(
            InlineKeyboardButton("<< Back", callback_data="list"))
        await bot.send_message(query.from_user.id,
                               f"Device *{device.name}* was removed.",
                               parse_mode="markdown",
                               reply_markup=keyboard_markup)

        await query.message.delete()
        await query.answer()

    @dispatcher.message_handler(authorized, commands=["user_id"])
    async def chat_id_handler(message: Message):
        await message.answer(f"User ID: {message.from_user.id}")

    log.info("Bot dispatcher created")
    return dispatcher
Exemple #14
0
 def __init__(self, db, host, port, bot_token):
     self.__wg = WaitGroup()
     self.__db = db
     self.__server_address = (host, port)
     self.bot = Bot(token=bot_token)
     self.dispatcher = Dispatcher(self.bot)
Exemple #15
0
from aiogram import Dispatcher
from aiogram.contrib.middlewares.logging import LoggingMiddleware

from telegram_bot.settings import dispatcher_storage
from telegram_bot.telegram.bot import bot
"""
help - 帮助
weather - 获取实时天气(最近两天)
weather_6h - 获取实时天气(最近六小时)
set_location - 更新位置
subscribe - 开启订阅
unsubscribe - 关闭订阅
set_ding_bot - 新增钉钉机器人同步
delete_ding_bot - 移除钉钉同步
"""
dp = Dispatcher(bot, storage=dispatcher_storage)
dp.middleware.setup(LoggingMiddleware())
Exemple #16
0
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from bot.bot_utils import mysql_connect
from bot.bot_utils import user_stat
from bot.usersession import UserSession
from settings import bot_token, db_conf

logger.add("oppiwordsbot_{time}.log")

TOKEN = bot_token[sys.argv[1:][0]]
bot = Bot(token=TOKEN, parse_mode=types.ParseMode.MARKDOWN)
db_conf = db_conf[sys.argv[1:][0]]
user_stat.conf = db_conf

mem_storage = MemoryStorage()
dp = Dispatcher(bot, storage=mem_storage)
RESTART = '"Sorry, something went wrong. Try restarting with /start, your progress is saved"'
with open('bot/app/lang.list') as f:
    LANGS = f.readlines()
LANGS = [x.replace('\n', '').lower() for x in LANGS]

sessions = ExpiringDict(max_len=2000, max_age_seconds=60 * 60 * 24)


async def get_session(user_id):
    if user_id in sessions.keys():
        return sessions[user_id]
    else:
        s = await create_user_session(user_id)
        return s
Exemple #17
0
import asyncio
import aiohttp

from aiogram import Bot, Dispatcher, executor
from config import BOT_TOKEN, _host, _port, _login_proxy, _password_proxy, _proxy_type
from aiogram.contrib.fsm_storage.memory import MemoryStorage


# PROXY_AUTH = aiohttp.BasicAuth(login=_login_proxy, password=_password_proxy)

loop = asyncio.get_event_loop()     # Создание асинхронного потока
# Тип парсинга - теги как в html
# bot = Bot(token=BOT_TOKEN, parse_mode='HTML', proxy=f'{_proxy_type}://{_host}:{_port}', proxy_auth=PROXY_AUTH)
bot = Bot(token=BOT_TOKEN, parse_mode='HTML')
dp = Dispatcher(bot=bot, loop=loop, storage=MemoryStorage())  # Доставщик сообщений

if __name__ == '__main__':
    from handlers.handlers import dp, send_to_admin
    executor.start_polling(dp, on_startup=send_to_admin)
import asyncio

from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage

from data import config
from data.config import PARSER_DB
from utils.db_api.categories_command import CategoriesCommands
from utils.db_api.costs_commands import CostsCommands
from utils.db_api.payments_commands import PaymentsCommands

bot = Bot(token=config.BOT_TOKEN, parse_mode=types.ParseMode.HTML)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage, loop=asyncio.get_event_loop())

PAYMENTS_TABLE = PaymentsCommands(PARSER_DB)
CATEGORY_TABLE = CategoriesCommands(PARSER_DB)
COSTS_TABLE = CostsCommands(PARSER_DB)
Exemple #19
0
API_TOKEN = admin_data["api_token"]
# Create admins_id structure: [int, int]
ADMINS_IDS = [
    list(adm_id.values())[0]
    for adm_id in [adm_row for adm_row in admin_data["admins_ids"]]
]

# Create storage for save message state
storage = MemoryStorage()

# Configure logging
logging.basicConfig(level=logging.INFO)

# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot, loop=loop, storage=storage)

# Display output information in images (images - True, text - False):
image_output = True


start_string = "/start - initialization message\n\n"\
               "/privat - exchange rates\n\n"\
               "/exmo - crypto exchange rates\n\n"\
               "/weather - weather data\n\n"\
               "/geoposition - take GPS location\n\n" \
               "/bot - technical commands"


@dp.message_handler(commands=["start"])
@admin_check(ADMINS_IDS)
Exemple #20
0
import logging.config

import aiohttp
from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.redis import RedisStorage2
from aiogram.contrib.middlewares.i18n import I18nMiddleware
from babel.support import LazyProxy
from environs import Env

env = Env()

settings_name = env("BOT_SETTINGS_MODULE", "bot.settings.production")

settings = importlib.import_module(settings_name)

logging.config.dictConfig(settings.LOGGING)

bot = Bot(settings.BOT_TOKEN)

dp = Dispatcher(bot, storage=RedisStorage2(**settings.FSM_STORAGE))

i18n = I18nMiddleware(settings.I18N_DOMAIN, settings.LOCALES_DIR)

dp.middleware.setup(i18n)

_ = i18n.gettext


def N_(*args, **kwargs) -> LazyProxy:
    return i18n.lazy_gettext(*args, enable_cache=False, **kwargs)
Exemple #21
0
from aiogram import Bot, Dispatcher, executor, types
import asyncio

import requests
from bs4 import BeautifulSoup

from config import API_TOKEN, url, headers
import  dbworker


logging.basicConfig(level=logging.INFO)


loop = asyncio.get_event_loop()
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot, loop=loop)



async def add_to_db(msg):
    dbworker.init_db()
    dbworker.add_user(user_id=msg.from_user.id)

@dp.message_handler(commands=["start"])
async def send_welcome(message: types.Message):
    await add_to_db(message)
    await message.reply("Вы добавлены для розсылки")


async def send_everyone(liga, detail_match):
    users = dbworker.get_users()
Exemple #22
0
import db_aps
import keyboards
import phrases
import utils

load_dotenv()

bot_logger = getLogger('avito_bot_logger')

# bot settings
proxy = os.environ.get('TG_PROXY')
bot = Bot(token=os.environ['TG_BOT_TOKEN'], proxy=proxy)
dispatcher = Dispatcher(
    bot=bot,
    storage=RedisStorage2(host=os.environ['DB_HOST'],
                          port=os.environ['DB_PORT'],
                          password=os.environ['DB_PASSWORD']),
)


class AddSearch(StatesGroup):
    """Add search states group."""
    waiting_url = State()


class DelSearch(StatesGroup):
    """Delete search states group."""
    waiting_search_number = State()


class AdminPanel(StatesGroup):
Exemple #23
0
import logging

from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.contrib.middlewares.logging import LoggingMiddleware

from config import TELEGRAM_TOKEN

bot = Bot(token=TELEGRAM_TOKEN)
dp = Dispatcher(bot, storage=MemoryStorage())
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
dp.middleware.setup(LoggingMiddleware())
Exemple #24
0
from aiogram import Bot, Dispatcher
import logging
import config
import os
from aiogram.contrib.fsm_storage.mongo import MongoStorage

bot = Bot(config.TOKEN)
MongoDB = MongoStorage(host=config.Mongo.host,
                       port=config.Mongo.port + '/' + config.Mongo.db_name,
                       username=config.Mongo.username,
                       password=config.Mongo.password,
                       db_name=config.Mongo.db_name)

income_picture = os.environ.get('INCOME_PICTURE')\
    if os.environ.get('INCOME_PICTURE') is not None else \
    "AgACAgIAAxkDAAIHA17P-qCE0MRFPOhKAlDDl8fzEO_jAAK1rjEb-xKBSq8q47TF4U5XKYNvkS4AAwEAAwIAA3gAA-HPAwABGQQ"


async def get_inc_pic():
    with open('resources/income_profile.png', 'rb') as ph:
        a = await bot.send_photo(config.admins['main'], ph)
        return a['photo'][1]['file_id']


dp = Dispatcher(bot, storage=MongoDB)
logging.basicConfig(level=logging.INFO)
Exemple #25
0
from TelegramEDT.EDTcalendar import Calendar
from TelegramEDT.base import Base, User
from TelegramEDT.lang import lang
from TelegramEDT.logger import logger
from TelegramEDT.EDTscoped_session import scoped_session

if not isfile("token.ini"):
    logger.critical("No token specified, impossible to start the bot !")
    exit(1)
API_TOKEN = open("token.ini").readline().replace("\n", "")
ADMIN_ID = 148441652
TIMES = ["", "day", "next", "week", "next week"]

bot = Bot(token=API_TOKEN)
posts_cb = CallbackData("post", "id", "action")
dp = Dispatcher(bot)
engine = create_engine("sqlite:///edt.db")
session_factory = sessionmaker(bind=engine)
Session = scoped_session(session_factory)
if not isfile("edt.db"):
    Base.metadata.create_all(engine)

key = reply_keyboard.ReplyKeyboardMarkup()
for k in ["Edt", "Kfet", "Setkfet", "Setedt", "Notif", "Settomuss"]:
    key.add(reply_keyboard.KeyboardButton(k))

modules_active = list()


def check_id(user: types.User):
    with Session as session:
Exemple #26
0
from aiogram import Bot, Dispatcher, executor
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from loguru import logger
from tortoise import Tortoise

import config
from app import middlewares
from app import handlers

storage = MemoryStorage()
telegram_bot = Bot(token=config.TELEGRAM_BOT_TOKEN)
dp = Dispatcher(telegram_bot, storage=storage)


def on_startup():
    logger.info("Register handlers...")
    # Register you handlers here.
    handlers.default.setup(dp)
    dp.middleware.setup(middlewares.UserMiddleware())


async def database_init():
    await Tortoise.init(db_url=config.DB_URL,
                        modules={'models': ['app.models']})
    # await Tortoise.init_models(app_label='models', models_paths=['app.models'])
    await Tortoise.generate_schemas(True)
    logger.info("Tortoise inited!")


if __name__ == "__main__":