Ответы пользователя по тегу ВКонтакте
  • Как получить conversation_message_id из метода message.send?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    event.object.message['conversation_message_id']
    Ответ написан
    Комментировать
  • Как остановить цикл отправив сообщение в вк?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    while True:
        if message.startswith('autosend'):
              intspam = message[9:]
              autosend(intspam)
           if message == 'stop':
               break
    Ответ написан
  • Как реализовать следующие функции?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    "Могу сделать вам полноценного бота, все функции которые хотите: 1000 рублей :)"
    Ответ написан
    Комментировать
  • Как получить цифровое айди из буквенного айди пользователя через написанное сообщение в беседе ВК?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    Самая простая функция:
    renmes = event.obj.messsage['text']
    def getuserid():
        craetid = getting_api.utils.resolveScreenName(screen_name=renmes.split(' ')[1])['object_id']
        return craetid
        pass
    Ответ написан
    Комментировать
  • Как узнать последнее отправленное сообщение конкретному пользователю от группы ВК?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    Что получить conversation_message_id нужно просто создать переменную типа:
    conv = event.obj.message['conversation_message_id']

    Peer_id в сообщениях с пользователем:
    per = event.object.message['from_id']
    Если же нужно отвечать как вы сказали конкретному пользователю, то перед поставьте условие:
    if event.from_user:
        id =  event.object.message['from_id']
        if id == 'айди пользователя'
        #Код
    Ответ написан
  • Какой peer_id на стороне бота?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    Добрый день, ваш peer_id отличается от peer_id бота, если беседа которую вы создали имеет peer_id - 2000000000 + ваш айди, у бота он будет 2000000000 + беседа по счету, например если это его первая беседа то peer_id- 2000000001 и тд.
    P.S если вы хотите например из лс бота скинуть сообщение в беседу, укажите chat_id: айди бота
    Ответ написан
    Комментировать
  • Как вывести ID админов беседы ВК?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    Как я понял, вам нужно сделать проверку на администратора, чтобы это сделать, создайте файл с расширением .py, и в нем создайте массив, пример на vk_api(python):
    user = event.object.message['from_id']
    admins = []
    if user in admins:
       #действия

    А вообще лучше сделать так, (если у вас нет базы данных) cоздайте txt файл, а дальше вот так:
    checker = open('file_name', 'r')
    shecker = checker.read()
    checker.close()
    user = event.object.message['from_id']
    mes = event.object.message['text']
    if mes == 'text' and user in shecker:
          #действия

    Также, можно добавлять пользователя в админ лист и исключать его:
    def adminadder(): #ADD
          adder = open('file_name', 'a')
          radder = adder.write(mes.split(' ')[1] + '\n')
          adder.close()
          pass
    if mes.split(' ')[0] == 'adminadd':
       adminadder()
    def adminremover(): #REMOVE
          rem = open('file_name', 'r')
          lines = rem.readlines()
          rem.close()
          rem = open("administration.txt", "w")
          for line in lines:
            if line != mes.split(' ')[1] + "\n":
                rem.write(line)
                rem.close()
                pass
    if mes.split(' ')[0] == "adminremove':
       adminremover()
    Ответ написан
  • Как справиться с периодической неотправкой сообщений при использовании vk_api?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    Толком не понял чего вы хотите, но чтобы отправить сообщение от имени группы пользователю, нужно чтобы он написал вам первым, а так, вот написал вам скрипт простого бота:
    import vk_api
    token = ""
    id_group = айди_группы
    vk = vk_api.VkApi(token=token)
    longpoll = VkBotLongPoll(vk, id_group)
    getting_api = vk.get_api()
    
    def otpravitel(id, message):
          vk.method("messages.send", {"user_id": id, "message": text, 'random_id': 0})
    
    while True:
         for event in longpoll.listen():
            if event.type == VkBotEventType.MESSAGE_NEW:
              if event.from_user:
                 id = event.object.message['from_id']
                 mes = event.object.message['text']
                 if mes == 'Привет, как дела?'
                    otpravitel(id, 'Привет, отлично, у тебя?')
                 else:
                    otpravitel(id, 'Я не понял вас')
         continue

    Зачем столь напрягаться если просто можно взглянуть в документацию? Или посмотреть роликов на ютубе?
    P.S советую использовать BotsLongPoll для работы ТОЛЬКО в беседах, UserLongPoll для пользователей.
    Ответ написан
    4 комментария
  • Как написать бота для вк с функциями администрирования беседы, а именно кик, бан, мут и предупреждение?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    Функция кика реализуется очень просто:
    def kicker(id):
         vk.method("messages.removeChatUser", {'chat_id': id, 'user_id': mes.split(' ')[1]})
    #Вызов
     if mes.split(' ')[0] == 'кик':
        mes = event.object.message['text']
        id = event.chat_id
        kicker(id)

    Насчёт бана мута и предупреждений. Чтобы реализовать функцию бана потребуется txt файл, пример:
    Добавляете айди пользователя в txt файл и проверяете:
    #Функция бана
    def ban(id, user_id):
          vk.method("messages.removeChatUser", {'chat_id': id, 'user_id': user_id})
    check = open('имя_файла', 'r')
    recheck = check.read()
    user_id = event.object.message['from_id']
    if user_id in recheck :
           ban(id, user_id)

    ЛИБО:
    Создаём проверку на вступления участника в беседу и новую функцию:
    def banagain(id, rinvite_id)
          vk.method("messages.removeChatUser", {'chat_id': id, 'user_id': rinvite_id})
                    try:
                        rin = event.message.action['type']
                        rinvite_id = event.message.action['member_id'] 
                    except:
                        rinvite_id = -100
                        rin = ''
                   if rin == 'chat_invite_user':
                      if rinvite_id in recheck:
                              banagain(id, rinvite_id)

    Методы "предов" и мута делаются почти точно также, но там нужен модуль time, да и саму функцию бана можно реализовать с использованием модуля datetime.
    P.S с помощью User Long Poll можно сделать так чтобы после бана пользователя уведомляло об этом. Также можно добавлять пользователя в список забаненных с помощью взаимодействия с файлами, можешь почитать тут
    Ответ написан
    Комментировать
  • Vk_api TypeError: __call__() takes 1 positional argument but 3 were given, во время получения имени по id возникает ошибка, что делать?

    @RINAMI
    Занимаюсь монтажом и дизайном. PSD,AEX,VEG.
    Добрый день, вы указываете переменную после ее использования, попробуйте так:
    import vk_api, vk
    from vk_api.keyboard import VkKeyboard, VkKeyboardColor
    from vk_api.utils import get_random_id
    from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
    vk = authorize.get_api()
    authorize = vk_api.VkApi(token='ad6d1569fcd231ba7bb3af6d021144dc81a88d111111111111d5f0016a0ff5448c1ca33d649a2789b6975')
    longpoll = VkBotLongPoll(authorize, group_id=206090038)


    Как я понял, вам нужно получить имя и фамилию пользователя, в таком случае стоит сделать так:
    def take_name(from_id)
         if from_id > 0:
            sender_info = getting_api.users.get(user_ids=from_id)[0]
            full_name = sender_info.get('first_name') + ' ' + sender_info['last_name']
            return full_name
            pass

    P.S лучше переименуйте vk в что-нибудь другое, например getting_api
    В итоге получится getting_api = vk.get_api()
    Ответ написан
    2 комментария