示例#1
0
def main():
    client = BittrexClient()

    try:
        current_price = client.get_last_price(pair=NOTIFY_PAIR)
        message = "{} = {}".format(NOTIFY_PAIR, current_price)
    except BittrexError:
        logger.error("BittrexError")
        message = "Произошла ошибка"

    config = load_config()

    # Подключиться к API
    req = Request(
        connect_timeout=0.5,
        read_timeout=1.0,
    )
    bot = Bot(
        token=config.TG_TOKEN,
        request=req,
        base_url=config.TG_API_URL,
    )

    # Проверить что бот корректно подключился к Telegram API
    info = bot.get_me()
    logger.info(f'Bot info: {info}')

    # Отправить сообщение
    bot.send_message(
        chat_id=NOTIFY_USER_ID,
        text=message,
    )
    logger.info('Success: %s', message)
示例#2
0
文件: notify.py 项目: deniro2/bot
def main():
    client = BittrexClient()

    try:
        current_price = client.get_last_price(pair=NOTIFY_PAIR)
        message = "{} = {}".format(NOTIFY_PAIR, current_price)
    except BittrexError:
        logger.error("BittrexError")
        message = "Произошла ошибка"

    config = load_config()
    bot = Bot(
        token=config.TG_TOKEN,
        base_url=config.TG_API_URL,
    )
    bot.send_message(
        chat_id=NOTIFY_USER_ID,
        text=message,
    )
示例#3
0
文件: search.py 项目: Roland4U/reps
class Searcher:
    def __init__(self):
        # Получить список доступных валют
        self.bittrex = BittrexClient()
        self.names = list(self.bittrex.get_all_names())

    def parse_query(self, text: str) -> list:
        """ Понять что именно запросил пользователь
        """
        val = text.upper().strip()
        # TODO: нечёткий поиск
        return [name for name in self.names if val in name]

    def get_prices(self, names: list):
        """ Получить список цен для запрошенных валют
        """
        # Привести имя валюты к паре и обратно
        pairs = [f'USD-{name}' for name in names]
        for (pair, price) in self.bittrex.get_last_prices(pairs=pairs):
            name = pair.split('-')[1]
            yield name, price
示例#4
0
文件: search.py 项目: Roland4U/reps
 def __init__(self):
     # Получить список доступных валют
     self.bittrex = BittrexClient()
     self.names = list(self.bittrex.get_all_names())
示例#5
0
CALLBACK_BUTTON_HIDE_KEYBOARD = "callback_button9_hide"

TITLES = {
    CALLBACK_BUTTON1_LEFT: "Новое сообщение ⚡️",
    CALLBACK_BUTTON2_RIGHT: "Отредактировать ✏️",
    CALLBACK_BUTTON3_MORE: "Ещё ➡️",
    CALLBACK_BUTTON4_BACK: "Назад ⬅️",
    CALLBACK_BUTTON5_TIME: "Время ⏰",
    CALLBACK_BUTTON6_PRICE: "BTC 💰",
    CALLBACK_BUTTON7_PRICE: "LTC 💰",
    CALLBACK_BUTTON8_PRICE: "ETH 💰",
    CALLBACK_BUTTON_HIDE_KEYBOARD: "Спрять клавиатуру",
}

# Глобально инициализируем клиент API Bittrex
client = BittrexClient()


def get_base_inline_keyboard():
    """ Получить клавиатуру для сообщения
        Эта клавиатура будет видна под каждым сообщением, где её прикрепили
    """
    # Каждый список внутри `keyboard` -- это один горизонтальный ряд кнопок
    keyboard = [
        # Каждый элемент внутри списка -- это один вертикальный столбец.
        # Сколько кнопок -- столько столбцов
        [
            InlineKeyboardButton(TITLES[CALLBACK_BUTTON1_LEFT],
                                 callback_data=CALLBACK_BUTTON1_LEFT),
            InlineKeyboardButton(TITLES[CALLBACK_BUTTON2_RIGHT],
                                 callback_data=CALLBACK_BUTTON2_RIGHT),
def main():
    parser = argparse.ArgumentParser()
    # Оба аргумента опциональные, поэтому они начинаются с --
    parser.add_argument("--image",
                        help="Отправить сообщение с картинкой",
                        action="store_true")
    parser.add_argument("--text",
                        help="Отправить сообщение с текстом",
                        action="store_true")
    args = parser.parse_args()

    # Нельзя указать оба сразу
    if args.image and args.text:
        logger.error("Нельзя указать одновременно `--image` и `--text`")
        sys.exit(1)

    # Если ничего не указано, то считаем что это --text
    if not any([args.image, args.text]):
        args.text = True

    config = load_config()

    client = BittrexClient()

    try:
        current_price = client.get_last_price(pair=config.NOTIFY_PAIR)
        message = "{} = {}".format(config.NOTIFY_PAIR, current_price)
    except BittrexError:
        logger.error("BittrexError")
        current_price = None
        message = "Произошла ошибка"

    config = load_config()

    # Подключиться к API
    req = Request(
        connect_timeout=0.5,
        read_timeout=1.0,
    )
    bot = Bot(
        token=config.TG_TOKEN,
        request=req,
        base_url=config.TG_API_URL,
    )

    # Проверить что бот корректно подключился к Telegram API
    info = bot.get_me()
    logger.info(f'Bot info: {info}')

    # Отправить сообщение
    bot.send_message(
        chat_id=config.NOTIFY_USER_ID,
        text=message,
    )
    logger.info('Success: %s', message)

    if args.text:
        bot.send_message(
            chat_id=config.NOTIFY_USER_ID,
            text=message,
        )
        logger.info("текстовое сообщение отправлено")
    if args.image:
        if current_price:
            text = [config.NOTIFY_PAIR, current_price]
        else:
            text = [config.NOTIFY_PAIR, message]

        img = drawer(text=text)
        photo = save_image(img=img)
        bot.send_photo(
            chat_id=config.NOTIFY_USER_ID,
            photo=photo,
            caption='Подпись под фото',
        )
        logger.info("картинка отправлена")