コード例 #1
0
def voiceProcessing(event, kick_votes, vk, element, ind):
    ''' Обработка голоса пользователя

        :event: Объект события LongPoll
        :kick_votes: Список претендетов на кик
        :vk: Объект сессии ВК
        :element: Элемент списка претендентов на кик для данного чата
        :ind: Выбранный пользователем вариант голоса. Может принимать
              два значения:
              'count_yes', если пользователь проголосовал за кик.
              'count_no', если против

        :NoReturn:
    '''
    user = users.getUser(vk, element['id'])  # Получаем объект пользоваетля
    if not (event.user_id
            == user['id']):  # Если пользователь не голосует сам за себяя
        if not (event.user_id
                in element['voted']):  # Если пользователь еще не голосовал
            element['voted'].add(
                event.user_id
            )  # Заносим пользователя в множество проголосовавших
            element[
                ind] += 1  # Увеличиваем количество голосов за/против (В зависимости от выбора пользователя)

            # Формируем и отправляем сообщения о голосе
            user_message = bot_msg.vote_accepted.format(
                str(element['count_yes']), str(element['count_no']))
            writeMessage(vk, event.chat_id, user_message)
    else:
        writeMessage(vk, event.chat_id, bot_msg.err_vote_for_yourself)
コード例 #2
0
def checkForBan(vk, black_list, user_id, chat_id):
    ''' Проверяем, нужно ли выгнать пользователя (находится ли он в черном списке) и если находится, то выгоняем его

        :param vk: Объект сессии ВК
        :param black_list: Бан-лист
        :param user_id: ID пользователя
        :param chat_id: ID беседы ВК

        :NoReturn:
    '''
    id = users.getUser(vk, user_id)['id']

    if isUserInBanList(black_list, id, chat_id):
        # Пользователь из ЧС находится в беседе
        writeMessage(vk, chat_id, bot_msg.banned_user_came_in)
        kickUser(vk, chat_id, id)
コード例 #3
0
def kickUser(vk, chat_id, user_id):
    ''' Выгоняет пользователя из беседы

        :param vk: Объект сессии ВК
        :param user_id: id пользователях
        :param chat_id: id беседы ВК

        :NoReturn:
    '''
    try:
        vk.method('messages.removeChatUser', {
            'chat_id': chat_id,
            'user_id': users.getUser(vk, user_id)['id']
        })
    except:
        writeMessage(vk, chat_id, bot_msg.no_rights_for_kicks)
コード例 #4
0
def addBanList(vk, black_list, user_id, chat_id, isWrite=False):
    ''' Добавляет пользователя в бан-лист

        :param vk: Объект сессии ВК
        :param black_list: Бан-лист
        :param user_id: ID пользователя
        :param chat_id: ID беседы ВК
        :param isWrite: Отображать ли сообщение о добавлении в бан-лист

        :NoReturn:
    '''

    id = users.getUser(vk, user_id)['id']
    if isUserInBanList(black_list, id,
                       chat_id):  # Если пользователь уже в бан-листе
        writeMessage(vk, chat_id, bot_msg.user_already_in_banlist)
    else:
        black_list.append({'id': id, 'chat': chat_id})
        if isWrite:
            writeMessage(vk, chat_id, bot_msg.user_added_in_banlist)
コード例 #5
0
def unbanUser(vk, user_id, banlist, chat_id):
    ''' Разблокировка пользователя (Удаление из ЧС беседы)

        :param vk: Объект сессии ВК
        :param user_id: id пользователя, которого надо разбанить
        :param ban_list: Список забаненных пользоваетелей
        :param chat_id: id беседы, в которой надо разблокировать пользователя

        :NoReturn:
    '''
    id = users.getUser(vk, user_id)['id']
    for i, element in enumerate(banlist):  # Перебируем список заблокированных
        if element['id'] == id and element['chat'] == chat_id:  # Нашли
            del banlist[i]  # Удаляем элемент списка
            userName = users.getName(vk, user_id, 'nom')
            user_message = bot_msg.unban_user.format(userName)
            break
    else:
        user_message = bot_msg.no_user_in_banlist
    writeMessage(vk, chat_id, user_message)
コード例 #6
0
ファイル: chats.py プロジェクト: jeaved08/vk-voteban-bot
def isUserInConversation(vk, user_id, chat_id):
    ''' Проверяем, находится ли пользователь с id = userid в чате с id = chat_id

        :param vk: Объект сессии вк
        :param user_id: id пользователя
        :param chat_id: id беседы ВК

        :return: Непустой список , если пользователь в беседе | [], если не в беседе
    '''
    user = users.getUser(vk, user_id)  # Получаем объект пользователя

    if not user:  # Пользователя не существует
        return False

    id = user['id']

    if not id:  # ID не существует
        return False

    # Получаем информацию о пользователях беседы
    chatMembers = getChatMembers(vk, chat_id)

    return list(
        filter(lambda member: member['member_id'] == id, chatMembers['items']))