• Как отправить аудио(музыку, как вложение) в беседу в боте вк python?

    Vast-Nectarine
    @Vast-Nectarine
    Пишу очень плохой код
    Демо
    Код
    Я пробовал загружать аудио (от имени группы), но ничего не получалось. Можно либо аудиосообщения отправлять, либо использовать уже кем-то выложенные песни.
    Токен, secret, confirmation_code - environment variables.
    AUDIO_LIST - список, в котором указан owner_id и media_id (т.е. кто-то уже выложил давным-давно)
    Ответ написан
    Комментировать
  • Проблема с выводом парсера у Vk бота. Что делать?

    Vast-Nectarine
    @Vast-Nectarine
    Пишу очень плохой код
    По ошибке видно, что массив p3 - пустой. Я не знаю, что хранится в p3, но, судя по всему, выполняется метод findAll.
    Можно сделать вывод, что findAll ничего не смог найти.
    Если честно, не морочьте голову и используйте openweathermap api для получения информации о погоде в каком-либо городе.
    мои мысли

    Приведите в порядок ваш код.
    Вместо
    request = requests.get("https://vk.com/id"+str(user_id))
    используйте f-строки
    request = requests.get(f"https://vk.com/id{user_id}")
    Лучше вообще таким образом не получать данные о пользователе. Используйте этот метод, чтобы получить информацию о пользователях. (Также можно сохранять в базу данных, но что если пользователь поменяет имя?)

    Используйте модуль logging, чтобы вести логи, а не использовать print.
    Сделайте больше проверок, обрабатывайте ошибки:
    1) Что если произойдет ошибка в
    request = requests.get("https://vk.com/id"+str(user_id))
    ?
    2) Что если сам long polling выдаст какую-нибудь ошибку?
    3) Что если вам сразу напишут много людей?
    import bs4 as bs4 Зачем? Достаточно import bs4
    И по мелочи:
    1) Используйте клавиатуру вместо команд ПРИВЕТ, ПОКА...
    2) Вместо сложной конструкции:
    vk.method('messages.send', ...)
    Используйте
    api = vk.get_api()
    api.messages.send(user_id=user_id, message=message, random_id=random.randint(0, 2048))

    3) Не называйте перменные как weather1 или p3. Почитайте про оформление кода.
    4) lxml быстрее парсит HTML. soup = BeautifulSoup(some_html, 'lxml')
    Его еще нужно установить pip install lxml Спасибо, Falconer

    Ответ написан
    Комментировать
  • Не отрабатывает метод рисования отрезка, что не так?

    Vast-Nectarine
    @Vast-Nectarine
    Пишу очень плохой код
    Я тут накидал пример, но с использованием turtule, и у меня всё работает.
    Сравните аксиому после подстановки. Может вы не так подставляете.
    Код:

    import turtle
    
    rules = {
        "A": "A-B--B+A++AA+B-",
        "B": "+A-BB--B-A++A+B",
        '+': '+',
        '-': '-'
    }
    
    axiom = ['A']
    
    level = 5
    
    for i in range(level):
        p = []
        for j in range(len(axiom)):
            s = list(rules[axiom[j]])
            p.extend(s)
        axiom = p
    
    print(axiom)
    t = turtle.Turtle()
    
    for l in axiom:
        if l in ['A', 'B']:
            t.forward(10)
        elif l == '+':
            t.left(60)
        elif l == '-':
            t.right(60)

    Ответ написан
    Комментировать