コード例 #1
0
    def __init__(self, bot: Bot):
        self.logger = get_logger("extensions.ticketing.panels")
        self.bot = bot

        # Start the reactions task
        self.ensure_initial_reactions.start()

        self.logger.info("loaded ticketing reaction panels")
コード例 #2
0
    def __init__(self, bot: Bot):
        self.logger = get_logger("extensions.ticketing")
        self.bot = bot

        # Connect to redis
        self.pool: Optional[aioredis.Redis] = None
        self.pool_set = Event()
        self.bot.loop.create_task(self.__redis_connect())

        self.logger.info("loaded ticketing commands")
コード例 #3
0
import requests, json
from bot.logger import get_logger

MAILER_LITE_API_PREFIX = "https://api.mailerlite.com/api/v2"
MAILER_LITE_GROUP_SUB_TMPL = MAILER_LITE_API_PREFIX + "/groups/%s/subscribers"
MAILER_LITE_USER_GROUPS_TMPL = MAILER_LITE_API_PREFIX + "/subscribers/%s/groups"

LOG_CATEGORY = 'VSLBOT.UTIL'
logger = get_logger(LOG_CATEGORY)


class MailerLite(object):
    def __init__(self, apikey, group_id):
        self.apikey = apikey
        self.group_id = group_id

    def get_headers(self):
        return {
            'content-type': 'application/json',
            'x-mailerlite-apikey': self.apikey,
        }

    def get_user_groups(self, email):
        '''Get all groups the user has subscribed to'''
        headers = self.get_headers()
        url = MAILER_LITE_USER_GROUPS_TMPL % email.strip().lower()
        r = requests.get(url, headers=headers)
        resp = r.json()
        if r.status_code != 200:
            error = resp['error']
            logger.error(
コード例 #4
0
import aiohttp
from dataclasses import asdict

from bot.settings import AirtableConfig
from bot.models import User
from bot.logger import get_logger
from bot.exceptions import AirtableRequestError

logger = get_logger(__name__)


class AirtableAPI:
    async def get_user(tg_id: str):
        column = "tg_id"
        params = {"filterByFormula": f"{column}='{tg_id}'"}

        try:
            async with aiohttp.ClientSession() as cs:
                async with cs.get(
                    AirtableConfig.USERS, params=params, headers=AirtableConfig.HEADERS
                ) as r:
                    resp = await r.json()
        except (aiohttp.ClientResponseError, aiohttp.ClientConnectorError):
            logger.exception("Problem when sending request")
            raise
        else:
            if "error" in resp:
                raise AirtableRequestError(resp["error"]["message"])
            else:
                return resp