Esempio n. 1
0
async def on_ready():
    print('Logged in as')
    print(bot.user.name)
    print(bot.user.id)
    q_module.reset()
    print('------')

    # start bg tasks
    saved_dt = datetime.now().strftime('%Y-%m-%d')
    saved_hour = -1
    while True:
        try:
            response = await pushes('integration')  # type: List[Push]
            for push in response:
                channel = bot.get_channel(push.channel)
                await bot.send_message(channel, push.message)
        except Exception as ex:
            print(ex)
        try:
            now = datetime.now()
            tm = now.strftime('%Y-%m-%d %H:%M:%S')
            current_dt = now.strftime('%Y-%m-%d')
            print("start bg tasks", tm)

            if now.hour != saved_hour:
                saved_hour = now.hour
                print('- new hour: %s' % str(saved_hour))
                # ================= New hour block
                if env.get("ser_url", None) is not None:
                    url = env.get("ser_url", None)
                    res = requests.get("%s/GetLastMonth" %
                                       url)  # upd information from cbr
                    print("Upd info:", res.text)

                msg = None
                if now.hour == 9:
                    msg = await scheduler('morning')
                    await bt.day_common_news(bot)

                elif now.hour == 10:
                    await bt.check_today_price(bot, current_dt)

                elif now.hour == 17:
                    msg = await scheduler('evening')

                if msg is not None:
                    await bt.send_work_text(bot, msg)

            print('- Is new day started? -', current_dt != saved_dt)
            if current_dt != saved_dt:
                # ================= New day block
                print('- new day -')
                saved_dt = current_dt

        except Exception as ex:
            print(ex)

        print('1 min')
        await asyncio.sleep(60)  # 1 minute
Esempio n. 2
0
async def on_message(message, answered=False):
    player = bt.get_player(message.server)

    # if message.content.lower().startswith(code + "!"):
    #     finder(message)

    if message.content.lower().startswith("!_!"):
        print(message)
        print(message.channel)
        answered = True

    if check(message, ' что ты умеешь'):
        import help_parser
        with open('brain.py', 'r') as f:
            txt = f.read()
        txt = help_parser.parse(txt)
        await bot.send_message(message.channel, txt)
        answered = True

    if message.content.lower().startswith("!!"):
        s_answer = str(message.content).split('!!')[1].strip()
        answer = int(s_answer)

        q_module.upd_question(answer, message)
        refresh_description()
        await bot.edit_message(helper.last_q, embed=helper.embed)
        answered = True

        # if "Direct Message" not in message.channel:
        #     q_module.upd_question(answer, message)
        #     refresh_description()
        #     await bot.edit_message(helper.last_q, embed=helper.embed)
        #     answered = True
        # else:
        #     serv_arg = re.findall(r'\[\[.*\]\]', message.content)
        #     if len(serv_arg) > 0:
        #         serv_arg = str(serv_arg[0])
        #         server = serv_arg[2:-2]
        #
        #         refresh_description(server)
        #         await bot.edit_message(helper.last_q, embed=helper.embed)
        #         answered = True

    if check(message, '!'):
        """info
          Могу выдать аниме coub: <сая! давай аниме> и если приглянулась мелодия могу дать ссылку на трек <сая! скинь трек>
       info"""
        answr = mus_module.finder(message)
        if answr is not None:
            await bot.send_message(message.channel, answr)
            answered = True

    if check(message, ' замути опрос'):
        """info
           Умею создавать опросы, команда: <замути опрос> текст-вопроса --ответ1 --ответ2 ((url-кратинки-для-опроса))
        info"""
        question = str(message.content).split('замути опрос')[1].strip()
        variants = []
        server = None
        img = ""
        if "[[" in question:
            serv_arg = re.findall(r'\[\[.*\]\]', question)
            if len(serv_arg) > 0:
                serv_arg = str(serv_arg[0])
                server = serv_arg[2:-2]
            question = question.replace(serv_arg, "")

        if "((" in question:
            img_arg = re.findall(r'\(\(.*\)\)', question)
            if len(img_arg) > 0:
                img_arg = str(img_arg[0])
                img = img_arg[2:-2]
            question = question.replace(img_arg, "")

        if "--" in question:
            variants = question.split("--")[1:]
            question = question.split("--")[0]

        await q_module.crt_web_form(message,
                                    bot,
                                    question,
                                    variants,
                                    destanation=server,
                                    img=img)
        answered = True

    if check(message, ' сбрось опрос'):
        """info
            Могу сбросить опрос, команда: <сбрось опрос>
         info"""
        q_module.reset()
        answered = True

    if check(message, ' привет'):
        await bot.send_message(message.channel, '%s' % bt.hi_answer())
        answered = True

    if message.content.lower().startswith('все понятно?'):
        print('[command]: все понятно')
        await bot.send_message(message.channel, 'Всё понятно!')
        answered = True

    if check(message, ' который час?'):
        """info
            Могу подсказать время, команда: <который час?>
         info"""
        print('[command]: время')
        tm = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        name = str(message.author).split("#")[0]
        await bot.send_message(message.channel, '%s господин %s!' % (tm, name))
        answered = True

    if check(message, ' прыгни в канал'):
        """info
            Могу скакать по каналам, команда: <прыгни в канал>
         info"""
        try:
            channel = str(message.content).split('канал')[1].strip()
            is_finded = False
            for ch in message.server.channels:
                if ch.name == channel:
                    # TODO change to => check_role(message) <-- need test
                    roles = bt.get_rolles(message)
                    if not any(role in vip for role in roles):
                        await bot.send_message(
                            message.channel,
                            'Не я не могу это сделать по вашей просьбе...')
                        raise Exception(
                            "[ERROR]: Not have permision for channel jump, %s"
                            % message.author)
                    vc = bot.voice_client_in(message.server)
                    if vc:
                        await vc.disconnect()
                    await bot.join_voice_channel(ch)
                    is_finded = True
                    await bot.send_message(message.channel, 'Туточки! ^_^')
                    break
            if not is_finded:
                await bot.send_message(message.channel, 'нет такого ТТ')
        except Exception as ex:
            print(ex)
            await bot.send_message(message.channel, 'что-то не пускает ТТ')
        answered = True

    if check(message, ' дай инфу по'):
        """info
            Могу дать информацию по некоторым играм, команда: <дай инфу по>
         info"""
        game = str(message.content).split("дай инфу по")[1]
        answer = bt.get_game_info(game)
        if answer:
            await bot.send_message(message.channel, '%s' % answer)
        else:
            await bot.send_message(message.channel, 'не знаю такой игры =\\')
        answered = True

    if 'кто в комнате?' in message.content:
        await bot.send_message(
            message.channel,
            'Тут темно страшно и какой-то паладин лезет обниматься!')
        answered = True

    if check(message, ' кыкай каст'):
        await bot.send_message(
            message.channel,
            'Сам кыкай %s бака!' % str(message.author).split("#")[0])
        answered = True

    if check(message, ' ты кто'):
        await bot.send_message(
            message.channel, 'Артефакт нейронной сети синедара,'
            ' и по совместительству скромный дворецкий сервера сндд')
        answered = True

    # ---------------------------------------- Плеер -----------------------------------------------------
    if check(message, ' отдать швартовы'):
        # ++++++++++++ Reset player
        if player:
            player.stop()
            player.replay = False
            sleep(3)
        else:
            player = bt.set_player(message.server, None)
        # ++++++++++++
        if bot.voice_client_in(message.server) is not None:
            await bot.voice_client_in(message.server).disconnect()

        voice_channel = message.author.voice_channel
        vc = await bot.join_voice_channel(voice_channel)
        url = "https://www.youtube.com/watch?v=yRh-dzrI4Z4"

        player.voice = vc
        if player.voice:
            player.player = await player.voice.create_ytdl_player(url)
            player.start()
            await bot.send_message(message.channel, 'Да капитан!')
        answered = True

    if check(message, ' спой'):
        """info
            Могу спеть, команда: <спой> url_трека_на_youtube
         info"""
        await bt.start_song(message, bot)
        answered = True

    if check(message, ' замолкни'):
        """info
            Могу перестать петь, команда: <замолкни>
         info"""
        await bot.send_message(message.channel, 'Ладно-ладно! Молчу!')
        player.stop()
        player.replay = False
        answered = True

    if check(message, ' повторяй '):
        """info
            Могу повторять песню, команда: <повторяй> url-трека-на-youtube
         info"""
        url = bt.get_url(message.content.split("повторяй")[1])
        if player:
            player.stop()
            player.replay = False
            # TODO crush without sleep - fix later
            sleep(3)
        else:
            player = bt.set_player(message.server, None)
        player.voice = bot.voice_client_in(message.server)
        if player.voice:
            player.replay = True
            player.repeat(bot, url)
            await bot.send_message(message.channel, 'Так точно!')
        else:
            await bot.send_message(message.channel, 'Но я ведь не в канале ТТ')
        answered = True

    if check(message, ' слейся'):
        """info
            Могу покинуть канал, команда: <слейся>
         info"""
        await bot.voice_client_in(message.server).disconnect()
        player.voice = None
        await bot.send_message(message.channel,
                               'Так точно! Только не ругаетесь! >_<')
        answered = True

    if check(message, ' тихо'):
        """info
           Могу петь тихо, команда: <тихо>
        info"""
        if player:
            await bot.send_message(message.channel, bt.q_answer())
            player.vol(0.1)
        else:
            await bot.send_message(message.channel,
                                   'Так ведь это... Тишина же...')
        answered = True

    if check(message, ' громко'):
        """info
           Могу петь громко, команда: <громко>
        info"""
        if player:
            await bot.send_message(message.channel, bt.q_answer())
            player.vol(1.0)
        else:
            await bot.send_message(message.channel,
                                   'Так ведь это... Тишина же...')
        answered = True

    if check(message, ' не шуми'):
        """info
           Могу установить среднюю громкость, команда: <не шуми>
        info"""
        if player:
            await bot.send_message(message.channel, bt.q_answer())
            player.vol(0.5)
        else:
            await bot.send_message(message.channel,
                                   'Так ведь это... Тишина же...')
        answered = True

    # if message.content.startswith(code + ' добавь в очередь '):
    #     # TODO queue
    #     await bot.send_message(message.channel, bt.you_answer())
    #     answered = True

    if check(message, ' установи громкость '):
        """info
            Могу установить громкость по вашему желанию, команда: <установи громкость> 0.09
        info"""
        if player:
            value = str(message.content).split('установи громкость')[1].strip()
            await bot.send_message(message.channel,
                                   "Хорошо, устанавливаю громкость %s" % value)
            player.vol(float(value))
        else:
            await bot.send_message(message.channel,
                                   'Так ведь это... Тишина же...')
        answered = True
    # ---------------------------------------- Плеер -----------------------------------------------------

    if check(message, 'wow'):
        await wow.answer(message, bot)
        answered = True

    if check(message, 'бака'):
        await bot.send_message(
            message.channel, 'Я бака!? Тебя давно в мокушку не кусали?! >_<')
        answered = True

    if check(message, ' ты '):
        await bot.send_message(message.channel, bt.you_answer())
        answered = True

    if check(message, ' запусти игру'):
        """info
            Могу устраивать викторины, команда: <запусти игру>
        info"""
        await bot.send_message(message.channel, 'Хорошо! Начинаем викторину!')
        try:
            screen = cinema_game.start_game(message.server, easy_mod=True)
            await bot.send_message(message.channel, screen)
            await bot.send_message(
                message.channel,
                "Для ответа напишите '!это название_фильма' для подсказки введите '!подсказка'"
            )
        except Exception as ex:
            bt.log(ex)
            await bot.send_message(message.channel,
                                   'Что-то не вышло... Давайте по новой')
        answered = True

    if message.content.lower().startswith("!это"):
        answer = str(message.content).split('!это')[1].strip()
        try:
            right_answer = cinema_game.game_try(answer, message.server)
            if right_answer:
                points = cinema_game.get_points()
                current_points = cinema_game.add_points_to_user(
                    str(message.author))
                await bot.send_message(
                    message.channel, f"Ответ принят. " + str(right_answer) +
                    f" Вы получаете {points} очков.")
                await bot.send_message(
                    message.channel, "Рейтинг игроков: " +
                    str(current_points) + " Продолжаем...")
                screen = cinema_game.start_game(message.server, easy_mod=True)
                await bot.send_message(message.channel, screen)
            else:
                await bot.send_message(message.channel, "Неа!")
        except Exception as ex:
            bt.log(ex)
            await bot.send_message(message.channel,
                                   'Что-то не вышло... Давайте по новой')
        answered = True

    if message.content.lower().startswith('!подсказка'):
        await bot.send_message(message.channel, 'Ладушки, посмотрим...')
        try:
            tip = cinema_game.get_tip(message.server)
            print("!подсказка", tip)
            if tip is not None:
                await bot.send_message(
                    message.channel,
                    'Даю подсказку, но учтите что выйгрыш становится меньше!')
                await bot.send_message(message.channel, tip)
            else:
                await bot.send_message('Увы, больше подсказок нету...')
        except Exception as ex:
            bt.log(ex)
            await bot.send_message(message.channel,
                                   'Что-то не вышло... Давайте по новой')
        answered = True

    # try crypto rates
    if check(message, ""):
        """info
            Могу подсказать динамику криптовалюты, команда: <динамика>/<какой курс> валюта
        info"""
        text = message.content[len(code):]
        ans = await crypto.ask_if_possible(text)
        if ans is not None:
            if isinstance(ans, str):
                await bot.send_message(message.channel, ans)
            else:
                file = BytesIO(ans)
                await bot.send_file(message.channel,
                                    file,
                                    filename='chart.png')
            answered = True
    # calc
    if not answered and check(message, ""):
        """info
            Могу считать, команда: <посчитай> 2+2
        info"""
        text = message.content[len(code):]
        ans = await calc.ask_if_possible(text)
        if ans is not None:
            await bot.send_message(message.channel, ans)
            answered = True

    reply = await root(message.content)
    if reply is not None:
        if isinstance(reply, str):
            await bot.send_message(message.channel, reply)
        else:
            file = BytesIO(reply)
            await bot.send_file(message.channel, file, filename='chart.png')
        answered = True

    # check duck-duck-go query (see phrases in lib)
    if not answered and check(message, ""):
        """info
            Могу подсказывать определения, команда: <что такое> вопрос
        info"""
        text = message.content[len(code):]
        ans = await ddg.ask_if_possible(text)
        if ans is not None:
            # found something
            # TODO catch error: Attempt to decode JSON with unexpected mimetype: application/x-javascript
            print("debug ans: ", ans)
            if len(ans.strip()) > 0:
                await bot.send_message(message.channel, ans)
                answered = True

    if message.content.startswith(code + 'exit233'):
        sys.exit()

        # if message.content.startswith(bot + ' спой'):
        # vc.create_ytdl_player(url)

        # bot.add_comand(yt)

        # url = "https://youtu.be/YLb3Cpiqe-o"
        # author = message.author
        # voice_channel = author.voice_channel
        # vc = await client.join_voice_channel(voice_channel)
        #
        # player = await vc.create_ytdl_player(url)
        # player.volume = 0.1
        # player.start()

        # if message.content.startswith(bot + ' спой'):
        #     # url = str(message.content).split('канал')[1].strip()
        #     # bot.add_comand(yt)
        #     url = "https://youtu.be/YLb3Cpiqe-o"
        #     author = message.author
        #     voice_channel = author.voice_channel
        #     vc = await client.join_voice_channel(voice_channel)
        #
        #     player = await vc.create_ytdl_player(url)
        #     player.volume(0.2)
        #     player.stop()

    if check(message, " ") and not answered:
        await bot.send_message(message.channel, bt.random_answer())
Esempio n. 3
0
async def on_message(message, answered=False):
    player = bt.get_player(message.server)

    if check(message, ' давай давай! лечиться!!!'):
        await bt.day_common_news(bot)
        # msg = await scheduler('evening')
        # await bt.send_work_test_text(bot, msg)
        answered = True

    if check(message, ' какие новости'):
        await bt.ask_common_news(bot, message)
        answered = True

    if check(message, ' лучший курс'):
        cur = str(
            message.content).split('лучший курс')[1].split('за')[0].strip()
        days = str(message.content).split('за')[1].split('дней')[0].strip()
        response, _ = bt.find_best_ser(cur, days)
        await bot.send_message(message.channel, "Легко!\n %s" % response)
        answered = True

    if message.content.lower().startswith("!_!"):
        print(message)
        print(message.channel)
        answered = True

    if message.content.lower().startswith("!!"):
        s_answer = str(message.content).split('!!')[1].strip()
        answer = int(s_answer)

        q_module.upd_question(answer, message)
        refresh_description()
        await bot.edit_message(helper.last_q, embed=helper.embed)
        answered = True

    if check(message, ' замути опрос'):
        """info
           Умею создавать опросы, команда: <замути опрос> текст-вопроса --ответ1 --ответ2 ((url-кратинки-для-опроса))
        info"""
        question = str(message.content).split('замути опрос')[1].strip()
        variants = []
        server = None
        img = ""
        if "[[" in question:
            serv_arg = re.findall(r'\[\[.*\]\]', question)
            if len(serv_arg) > 0:
                serv_arg = str(serv_arg[0])
                server = serv_arg[2:-2]
            question = question.replace(serv_arg, "")

        if "((" in question:
            img_arg = re.findall(r'\(\(.*\)\)', question)
            if len(img_arg) > 0:
                img_arg = str(img_arg[0])
                img = img_arg[2:-2]
            question = question.replace(img_arg, "")

        if "--" in question:
            variants = question.split("--")[1:]
            question = question.split("--")[0]

        await q_module.crt_web_form(message,
                                    bot,
                                    question,
                                    variants,
                                    destanation=server,
                                    img=img)
        answered = True

    if check(message, '!'):
        """info
          Могу выдать аниме coub: <сая! давай аниме> и если приглянулась мелодия могу дать ссылку на трек <сая! скинь трек>
       info"""
        answr = mus_module.finder(message)
        if answr is not None:
            await bot.send_message(message.channel, answr)
            answered = True

    if check(message, ' сбрось опрос'):
        """info
            Могу сбросить опрос, команда: <сбрось опрос>
         info"""
        q_module.reset()
        answered = True

    if check(message, ' !новость!'):
        block = str(message.content).split("!новость!")[1]
        theme = block.split("[[")[1].split("]]")[0]
        text = block.split("((")[1].split("))")[0]
        is_img = "@!@" in block and "@!@" in block
        if is_img:
            img = block.split("@!@")[1].split("@!@")[0]
            await bt.send_news(bot, theme, text, img)
        else:
            print("it")
            await bt.send_news(bot, theme, text)
        answered = True

    if message.content.lower().startswith('все понятно?'):
        print('[command]: все понятно')
        await bot.send_message(message.channel, 'Всё понятно!')
        answered = True

    if check(message, ' прыгни в канал'):
        """info
            Могу скакать по каналам, команда: <прыгни в канал>
         info"""
        try:
            channel = str(message.content).split('канал')[1].strip()
            is_finded = False
            for ch in message.server.channels:
                if ch.name == channel:
                    # TODO change to => check_role(message) <-- need test
                    roles = bt.get_rolles(message)
                    if not any(role in vip for role in roles):
                        await bot.send_message(
                            message.channel,
                            'Не я не могу это сделать по вашей просьбе...')
                        raise Exception(
                            "[ERROR]: Not have permision for channel jump, %s"
                            % message.author)
                    vc = bot.voice_client_in(message.server)
                    if vc:
                        await vc.disconnect()
                    await bot.join_voice_channel(ch)
                    is_finded = True
                    await bot.send_message(message.channel, 'Туточки! ^_^')
                    break
            if not is_finded:
                await bot.send_message(message.channel, 'нет такого ТТ')
        except Exception as ex:
            print(ex)
            await bot.send_message(message.channel, 'что-то не пускает ТТ')
        answered = True

    if check(message, ' дай инфу по'):
        """info
            Могу дать информацию по некоторым играм, команда: <дай инфу по>
         info"""
        game = str(message.content).split("дай инфу по")[1]
        answer = bt.get_game_info(game)
        if answer:
            await bot.send_message(message.channel, '%s' % answer)
        else:
            await bot.send_message(message.channel, 'не знаю такой игры =\\')
        answered = True

    # ---------------------------------------- Плеер -----------------------------------------------------
    if check(message, ' отдать швартовы'):
        # ++++++++++++ Reset player
        if player:
            player.stop()
            player.replay = False
            sleep(3)
        else:
            player = bt.set_player(message.server, None)
        # ++++++++++++
        if bot.voice_client_in(message.server) is not None:
            await bot.voice_client_in(message.server).disconnect()

        voice_channel = message.author.voice_channel
        vc = await bot.join_voice_channel(voice_channel)
        url = "https://www.youtube.com/watch?v=yRh-dzrI4Z4"

        player.voice = vc
        if player.voice:
            player.player = await player.voice.create_ytdl_player(url)
            player.start()
            await bot.send_message(message.channel, 'Да капитан!')
        answered = True

    if check(message, ' спой'):
        """info
            Могу спеть, команда: <спой> url_трека_на_youtube
         info"""
        await bt.start_song(message, bot)
        answered = True

    if check(message, ' замолкни'):
        """info
            Могу перестать петь, команда: <замолкни>
         info"""
        await bot.send_message(message.channel, 'Ладно-ладно! Молчу!')
        player.stop()
        player.replay = False
        answered = True

    if check(message, ' повторяй '):
        """info
            Могу повторять песню, команда: <повторяй> url-трека-на-youtube
         info"""
        url = bt.get_url(message.content.split("повторяй")[1])
        if player:
            player.stop()
            player.replay = False
            # TODO crush without sleep - fix later
            sleep(3)
        else:
            player = bt.set_player(message.server, None)
        player.voice = bot.voice_client_in(message.server)
        if player.voice:
            player.replay = True
            player.repeat(bot, url)
            await bot.send_message(message.channel, 'Так точно!')
        else:
            await bot.send_message(message.channel, 'Но я ведь не в канале ТТ')
        answered = True

    if check(message, ' слейся'):
        """info
            Могу покинуть канал, команда: <слейся>
         info"""
        await bot.voice_client_in(message.server).disconnect()
        player.voice = None
        await bot.send_message(message.channel,
                               'Так точно! Только не ругаетесь! >_<')
        answered = True

    if check(message, ' тихо'):
        """info
           Могу петь тихо, команда: <тихо>
        info"""
        if player:
            await bot.send_message(message.channel, bt.q_answer())
            player.vol(0.1)
        else:
            await bot.send_message(message.channel,
                                   'Так ведь это... Тишина же...')
        answered = True

    if check(message, ' громко'):
        """info
           Могу петь громко, команда: <громко>
        info"""
        if player:
            await bot.send_message(message.channel, bt.q_answer())
            player.vol(1.0)
        else:
            await bot.send_message(message.channel,
                                   'Так ведь это... Тишина же...')
        answered = True

    if check(message, ' не шуми'):
        """info
           Могу установить среднюю громкость, команда: <не шуми>
        info"""
        if player:
            await bot.send_message(message.channel, bt.q_answer())
            player.vol(0.5)
        else:
            await bot.send_message(message.channel,
                                   'Так ведь это... Тишина же...')
        answered = True

    if check(message, ' установи громкость '):
        """info
            Могу установить громкость по вашему желанию, команда: <установи громкость> 0.09
        info"""
        if player:
            value = str(message.content).split('установи громкость')[1].strip()
            await bot.send_message(message.channel,
                                   "Хорошо, устанавливаю громкость %s" % value)
            player.vol(float(value))
        else:
            await bot.send_message(message.channel,
                                   'Так ведь это... Тишина же...')
        answered = True
    # ---------------------------------------- Плеер -----------------------------------------------------

    if check(message, 'wow'):
        await wow.answer(message, bot)
        answered = True

    if check(message, ' запусти игру'):
        """info
            Могу устраивать викторины, команда: <запусти игру>
        info"""
        await bot.send_message(message.channel, 'Хорошо! Начинаем викторину!')
        try:
            screen = cinema_game.start_game(message.server, easy_mod=True)
            await bot.send_message(message.channel, screen)
            await bot.send_message(
                message.channel,
                "Для ответа напишите '!это название_фильма' для подсказки введите '!подсказка'"
            )
        except Exception as ex:
            bt.log(ex)
            await bot.send_message(message.channel,
                                   'Что-то не вышло... Давайте по новой')
        answered = True

    if message.content.lower().startswith("!это"):
        answer = str(message.content).split('!это')[1].strip()
        try:
            right_answer = cinema_game.game_try(answer, message.server)
            if right_answer:
                points = cinema_game.get_points()
                current_points = cinema_game.add_points_to_user(
                    str(message.author))
                await bot.send_message(
                    message.channel, f"Ответ принят. " + str(right_answer) +
                    f" Вы получаете {points} очков.")
                await bot.send_message(
                    message.channel, "Рейтинг игроков: " +
                    str(current_points) + " Продолжаем...")
                screen = cinema_game.start_game(message.server, easy_mod=True)
                await bot.send_message(message.channel, screen)
            else:
                await bot.send_message(message.channel, "Неа!")
        except Exception as ex:
            bt.log(ex)
            await bot.send_message(message.channel,
                                   'Что-то не вышло... Давайте по новой')
        answered = True

    if message.content.lower().startswith('!подсказка'):
        await bot.send_message(message.channel, 'Ладушки, посмотрим...')
        try:
            tip = cinema_game.get_tip(message.server)
            print("!подсказка", tip)
            if tip is not None:
                await bot.send_message(
                    message.channel,
                    'Даю подсказку, но учтите что выйгрыш становится меньше!')
                await bot.send_message(message.channel, tip)
            else:
                await bot.send_message('Увы, больше подсказок нету...')
        except Exception as ex:
            bt.log(ex)
            await bot.send_message(message.channel,
                                   'Что-то не вышло... Давайте по новой')
        answered = True

    # try crypto rates
    if check(message, ""):
        """info
            Могу подсказать динамику криптовалюты, команда: <динамика>/<какой курс> валюта
        info"""
        text = message.content[len(code):]
        ans = await crypto.ask_if_possible(text)
        if ans is not None:
            if isinstance(ans, str):
                await bot.send_message(message.channel, ans)
            else:
                file = BytesIO(ans)
                await bot.send_file(message.channel,
                                    file,
                                    filename='chart.png')
            answered = True
    # calc
    if not answered and check(message, ""):
        """info
            Могу считать, команда: <посчитай> 2+2
        info"""
        text = message.content[len(code):]
        ans = await calc.ask_if_possible(text)
        if ans is not None:
            await bot.send_message(message.channel, ans)
            answered = True

    reply = await root(message.content, raw_message=message, bot=bot)
    if reply is not None:
        if isinstance(reply, str):
            await bot.send_message(message.channel, reply)
        else:
            file = BytesIO(reply)
            await bot.send_file(message.channel, file, filename='chart.png')
        answered = True

    # check duck-duck-go query (see phrases in lib)
    if not answered and check(message, ""):
        """info
            Могу подсказывать определения, команда: <что такое> вопрос
        info"""
        text = message.content[len(code):]
        ans = await ddg.ask_if_possible(text)
        if ans is not None:
            # found something
            # TODO catch error: Attempt to decode JSON with unexpected mimetype: application/x-javascript
            print("debug ans: ", ans)
            if len(ans.strip()) > 0:
                await bot.send_message(message.channel, ans)
                answered = True

    if message.content.startswith(code + 'exit233'):
        sys.exit()

    if check(message, " ") and not answered:
        await bot.send_message(message.channel, bt.random_answer())
Esempio n. 4
0
async def on_ready():
    print('Logged in as')
    print(bot.user.name)
    print(bot.user.id)
    q_module.reset()
    print('------')