Ответы пользователя по тегу Python
  • Как прикрепить два вложения к сообщению бота?

    @truenotnamed
    Вместо
    attachment = 'photo-188884444_457239102', 'audio-188884444_456239017'

    нужно сделать
    attachment = 'photo-188884444_457239102,audio-188884444_456239017'
    Ответ написан
    Комментировать
  • Почему выдает ошибку синтаксиса?

    @truenotnamed
    Покажите весь Traceback — без него понять крайне сложно.
    Ответ написан
    Комментировать
  • Работающий лонгполл в ВК на Python, через requests?

    @truenotnamed
    Во-первых, если не ошибаюсь, ts — это не порт, а номер последнего события в данной группе. Он возвращается с каждым событием в группе, его нужно отправлять в каждом последующем запросе к Long Poll — об этом написано в документации. То есть нужно сделать подобно этому:

    last_ts = None
    
    def check():
        global last_ts
        params = {"access_token": str(vk), "v": str(version), "group_id": str(group_id)} # параметры GET-запроса, которые необходимо передать
        longpoll = requests.get("https://api.vk.com/method/groups.getLongPollServer", params).json()
        last_ts = longpoll["response"]["ts"]
        key = longpoll["response"]["key"]
        server = longpoll["response"]["server"].split(r'\'')
        server = ''.join(server)
        params = {"act": "a_check", "key": key, "ts": last_ts, "wait": 90} 
        longpoll = requests.get(server, params).json()
        print(longpoll)
        return longpoll["updates"]


    Правда не уверен, что функция будет корректно работать с return. Скорее всего, тут понадобиться сделать так:
    yield longpoll["updates"]
    Тогда будет работать корректно.

    А во-вторых, в vk_api можно поставить необходимую версию API:
    import vk_api
    vk = vk_api.VkApi(token = accessToken, api_version = "5.110")

    Или так (уже после иниализации vk):
    vk.api_version = "5.110"
    Ответ написан
    Комментировать
  • Как вывести данные из input в kivy?

    @truenotnamed
    class Screen2_2(BoxLayout):
      def text_input_1(self, text_1):
        print (text_1.text)
    Ответ написан
    Комментировать
  • Как поставить префикс боту?

    @truenotnamed
    Обозначить переменную с префиксом:

    prefix = "/"

    А после этого добавить проверку, является ли сообщение командой (то есть начинается с префикса):

    if body.lower().startswith(prefix):
        # код с логикой бота
    Ответ написан
    1 комментарий
  • Могу ли я переменную одного класса считать в другом?

    @truenotnamed
    Обращение и действия с атрибутом класса происходит таким образом:
    bool(player.posY > 10)
    print(player.posY)
    str(player.posY)

    Так можно делать любые операции с переменной posY класса player
    Подробней о классах в Python
    Ответ написан
    Комментировать
  • Как сделать вывод данных в одну строку из цикла for?

    @truenotnamed
    Отправка сообщения внутри цикла, поэтому и отправляется каждое вложение в каждом сообщении отдельно. Как я понял, необходимо отправить все вложения из события, тогда делаем так:

    attachments = ""
    for i in event.raw['object']['attachments']:
        attachments1 = i['type']
        try:
            attach = attachments1 + str(i[attachments1]['owner_id']) + '_' + str(i[attachments1]['id']) + '_' + str(i[attachments1]['access_key']) + ','
            attachments += attach
        except:
            attach = attachments1 + str(i[attachments1]['owner_id']) + '_' + str(i[attachments1]['id']) + ','
            attachments += attach
    vk.method('messages.send', {'peer_id': event.object.peer_id, 'message': event.object.text[5:], 'attachment': attachments, 'random_id': 0})

    Или же так:
    attachments = []
    eventAttachments = event.raw['object']['attachments']
    for attachment in eventAttachments:
        attach = "%s%s_%s" % (attachment['type'], attachment['owner_id'], attachment['id'])
        if 'access_key' in attachment:
            attach += "_%s" % attachment['access_key']
        attachments.append(attach)
    vk.method('messages.send', {'peer_id': event.object.peer_id, 'message': event.object.text[5:], 'attachment': ','.join(attachments), 'random_id': 0})
    Ответ написан
    Комментировать
  • Как прикреплять картинки в vk_api на Python в сообщении?

    @truenotnamed
    Необходимо использовать параметр attachment. Внешний вид аттача-фотографии будет выглядеть примерно так: photo{ownerid}_{photoid}.

    vk.method("messages.send", {"peer_id": event.object.peer_id, "message": "", 
    "attachment": "photo123_232,photo-1_1223"}) #отправка сообщения без текста с заранее выбранной картинкой
    Ответ написан