コード例 #1
0
ファイル: config_func.py プロジェクト: nikolajjakubets/MF-Bot
def update_multi_vote(vote_id):
    """Обновляет мульти-голосовашку"""
    with open(MULTI_VOTES_FILE, encoding='utf-8') as file:
        votes_shelve = file.read()
    if votes_shelve:
        votes_shelve = literal_eval(votes_shelve)
    else:
        votes_shelve = {}

    votey = dict(votes_shelve[vote_id])
    keyboard = InlineKeyboardMarkup()
    url = 'https://t.me/multifandomrubot?start=new_option{}'.format(vote_id)
    keyboard.row_width = 1
    keyboard.add(InlineKeyboardButton("Предложить вариант", url=url))
    for i in votey['keyboard']:
        keyboard.add(
            InlineKeyboardButton(i,
                                 callback_data='mv_' +
                                 str(votey['keyboard'].index(i))))
    # Меняем текст голосовашки
    text = votey["text"]
    for i in votey['votes']:
        text += '\n{}: '.format(i[0]) + ', '.join(i[1].values())
    edit_text(text=text,
              chat_id=votey['chat'],
              message_id=vote_id,
              reply_markup=keyboard,
              parse_mode="HTML")
コード例 #2
0
def message_about_add_chat_handler(call):
    """Tell users to use /add_chat x"""
    if output.get_member(call.message.chat.id, call.from_user.id).status in \
            ("creator", "administrator"):
        output.edit_text("Введите команду\n\n/add_chat x\n\n"
                         "Где x это номер системы вашего чата (ищите его в /help вашего чата",
                         call.message.chat.id, call.message.message_id)
    else:
        output.answer_callback(call.id, "Для жмака нужно иметь админку")
コード例 #3
0
def captcha_failed(call):
    """Bot reacts to someone clicked wrong button"""
    if CAPTCHERS.remove_captcher(call.from_user.id, call.message.chat.id):
        kick_and_unban(call.message.chat.id, call.from_user.id)
        answer_callback(call.id)
        edit_text("Испытание креветкой провалено! (нажата неверная кнопка)", call.message.chat.id,
                  call.message.message_id)
    else:
        answer_callback(call.id, text='Это не ваша животинка 👀')
コード例 #4
0
def non_ironic(call):
    """Реакция, если обвинение было неироничным"""
    # Проверка, нажал ли на кнопку не тот, кто нужен
    edit_text("Неиронично!", call.message.chat.id, call.message.message_id)
    send(admin_place(call.message, Database()),
         "Произошло оскорбление! " + "[Ссылка на инцидент](t.me/{}/{})".format(
             call.message.reply_to_message.chat.username, call.message.reply_to_message.message_id),
         parse_mode="Markdown")
    answer_callback(call.id)
コード例 #5
0
ファイル: config_func.py プロジェクト: nikolajjakubets/MF-Bot
 def run(self):
     CAPTCHERS.append(
         (self.message.new_chat_members[0].id, self.message.chat.id))
     time.sleep(300)
     if (self.message.new_chat_members[0].id,
             self.message.chat.id) in CAPTCHERS.list:
         kick_and_unban(self.message.chat.id,
                        self.message.new_chat_members[0].id)
         edit_text("Испытание креветкой провалено! (время истекло)",
                   self.bots_message.chat.id, self.bots_message.message_id)
         CAPTCHERS.remove(
             (self.message.new_chat_members[0].id, self.message.chat.id))
コード例 #6
0
def create_new_chat(call):
    """Add new system of chats"""
    database = Database()
    chat_type, link = cf.get_chat_type_and_chat_link(call.message.chat)
    all_systems = database.get_all('systems', 'id')
    ids = [int(sys['id']) for sys in all_systems]
    new_id = str(max(ids) + 1)
    cf.create_chat(call.message, new_id, chat_type, link, database)
    cf.create_system(call.message, new_id, database)
    edit_text("Создана новая система чатов с ID {}. Используйте /chat и /help "
              "для настройки и получения списка доступных команд".format(new_id),
              call.message.chat.id, call.message.message_id)
コード例 #7
0
def add_vote(call):
    """Вставляет голос в голосоовашку"""
    reply_markup = VOTE_KEYBOARD
    text = ''
    user = call.from_user
    user_username = user.username  # юзернейм жмакнувшего челика
    user_nickname = user.first_name
    user_id = user.id
    msg_id = call.message.message_id  # Ай ди жмакнутого сообщения
    # Как этот челик будет отображаться в сообщении
    link = f'<a href="t.me/{user_username}">{user_nickname}</a>'
    with open(VOTES_FILE, 'r', encoding='utf-8') as file:
        votes_shelve = literal_eval(file.read())

    if msg_id in votes_shelve.keys():
        votey = votes_shelve[msg_id]  # Получаем необходимую нам голосовашку в хранилище
        if time() - votey['time'] > 86400 and len(votey['favor']) != len(
                votey['against']):  # это сутки
            reply_markup = None
            text += 'Голосование окончено. Новые голоса не принимаются\n\n'
        # Person clicked a button containing their opinion
        elif user_id in votey[call.data].keys():
            # удаляем челика из словаря
            votey[call.data].pop(user_id)
        else:
            # Чистим прошлые мнения челика и записываем новое
            votey['favor'].pop(user_id, None)
            votey['against'].pop(user_id, None)
            votey['abstain'].pop(user_id, None)
            votey[call.data].update([(user_id, link)])
        votes_shelve[msg_id] = votey
        text += votey["text"]
        text += '\nЗа: ' + ', '.join(votey["favor"].values())
        text += '\nПротив: ' + ', '.join(votey["against"].values())
        text += '\nВоздерживающиеся: ' + ', '.join(votey["abstain"].values())
    else:
        reply_markup = None
        text += 'Голосование окончено по причине ненахода записи об этой голосовашки. ' \
                'Новые голоса не принимаются\n\n'
        text += call.message.text
    with open(VOTES_FILE, 'w', encoding='utf-8') as file:
        file.write(str(votes_shelve))
    edit_text(text=text,
              chat_id=call.message.chat.id,
              message_id=call.message.message_id,
              reply_markup=reply_markup,
              parse_mode="HTML")
    answer_callback(call.id, text="Жмак учтён!")
コード例 #8
0
def ironic(call):
    """Реакция, если обвинение было ироничным"""
    edit_text("Иронично, так иронично", call.message.chat.id, call.message.message_id)
    answer_callback(call.id)