# This example show how to write an inline mode telegram bot use pyTelegramBotAPI.
import logging
import sys
import time

import telebot
from telebot import types

API_TOKEN = "<TOKEN>"

bot = telebot.TeleBot(API_TOKEN)
telebot.logger.setLevel(logging.DEBUG)


@bot.inline_handler(lambda query: query.query == "text")
def query_text(inline_query):
    try:
        r = types.InlineQueryResultArticle(
            "1", "Result1", types.InputTextMessageContent("hi")
        )
        r2 = types.InlineQueryResultArticle(
            "2", "Result2", types.InputTextMessageContent("hi")
        )
        bot.answer_inline_query(inline_query.id, [r, r2])
    except Exception as e:
        print(e)


@bot.inline_handler(lambda query: query.query == "photo1")
def query_photo(inline_query):
    try:
        r = types.InlineQueryResultPhoto(
            "1",
            "https://raw.githubusercontent.com/eternnoir/pyTelegramBotAPI/master/examples/detailed_example/kitten.jpg",
            "https://raw.githubusercontent.com/eternnoir/pyTelegramBotAPI/master/examples/detailed_example/kitten.jpg",
            input_message_content=types.InputTextMessageContent("hi"),
        )
        r2 = types.InlineQueryResultPhoto(
            "2",
            "https://raw.githubusercontent.com/eternnoir/pyTelegramBotAPI/master/examples/detailed_example/rooster.jpg",
            "https://raw.githubusercontent.com/eternnoir/pyTelegramBotAPI/master/examples/detailed_example/rooster.jpg",
        )
        bot.answer_inline_query(inline_query.id, [r, r2], cache_time=1)
    except Exception as e:
        print(e)


@bot.inline_handler(lambda query: query.query == "video")
def query_video(inline_query):
    try:
        r = types.InlineQueryResultVideo(
            "1",
            "https://github.com/eternnoir/pyTelegramBotAPI/blob/master/tests/test_data/test_video.mp4?raw=true",
            "video/mp4",
            "https://raw.githubusercontent.com/eternnoir/pyTelegramBotAPI/master/examples/detailed_example/rooster.jpg",
            "Title",
        )
        bot.answer_inline_query(inline_query.id, [r])
    except Exception as e:
        print(e)


@bot.inline_handler(lambda query: len(query.query) == 0)
def default_query(inline_query):
    try:
        r = types.InlineQueryResultArticle(
            "1", "default", types.InputTextMessageContent("default")
        )
        bot.answer_inline_query(inline_query.id, [r])
    except Exception as e:
        print(e)


def main_loop():
    bot.infinity_polling()
    while 1:
        time.sleep(3)


if __name__ == "__main__":
    try:
        main_loop()
    except KeyboardInterrupt:
        print("\nExiting by user request.\n")
        sys.exit(0)
