Как сделать ВК-бота с погодой?

У меня уже есть ВК-бот, вот его код:

from vk_api.keyboard import VkKeyboard, VkKeyboardColor
import json
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from time import sleep
import random
import os, sqlite3
import json
import requests
keyboard = VkKeyboard(one_time=True)
keyboard.add_button('Что ты умеешь?', color=VkKeyboardColor.POSITIVE)
keyboard.add_button('??', color=VkKeyboardColor.POSITIVE)
keyboard.add_button('?', color=VkKeyboardColor.SECONDARY)

vk_session = vk_api.VkApi(token='Тут мой токен') 
vk = vk_session.get_api()
longpoll = VkLongPoll(vk_session)
def sender(id, text):
    vk.messages.send(user_id=id, message=text, random_id=0, keyboard=keyboard.get_keyboard())
while True:
    try:
        for event in longpoll.listen():
            if event.type == VkEventType.MESSAGE_NEW:
                if event.to_me:
                    msg = event.text.lower()
                    id = event.user_id
                    if 'привет' in msg :
                        sender(id, """Привет!
Я - бот Вася, постоянно обучающийся. Я буду помогать тебе постоянно!""")
                        send_stick(id, 112)
                        send_photo(id, 'photo337511104_457242663')
                    elif 'что' in msg and 'ты'in msg and 'умеешь'in msg:
                        sender(id, '''Я умею отвечать на твои эмоции

''')
     
                    elif 'ура' in msg and 'дура' not in msg:
                        sender(id, 'Ура!!! Салют ?')
                    elif 'весело' in msg:
                        sender(id, 'Я очень рад ?')
                    elif 'грустно' in msg or ( 'жал' in msg and 'пожалуйста' not in msg):
                        sender(id, 'Как жаль ?')
                    elif 'молоде'in msg or '?' in msg:
                        sender(id, 'Я рад, что тебе нравлюсь ?')
                    elif 'дура' in msg or 'плохой' in msg or ('вред' in msg and 'не' not in msg)or 'даун' in msg or 'дебил'in msg or 'идиот'in msg or 'придур'in msg or '?'in msg:
                        abv=random.randint(1, 2)
                        if abv == 1:
                            sender(id, 'Почему? ?')
                            sleep(0.2)
                            sender(id, 'Я на тебя обижен ?')
                        else:
                            sender(id, 'Это почему?')
                            sender(id, 'Я для него... А он... ?')
                    elif 'извин' in msg or 'прости' in msg:
                        sender(id, 'Прощаю, ладно ?')
                    elif 'хорош' in msg or 'тоже' in msg:
                        sender(id, 'Я очень рад  ?')
                    elif 'как' in msg and 'дела' in msg:
                        sender(id, 'У меня всё хорошо!')
                        sender(id, 'А как у тебя?')
                        
                    elif 'плох' in msg:
                        sender(id, 'Как жаль ?')
                    elif 'топ' in msg and 'топик' not in msg:
                        sender(id, 'Спасибо! ?')
                    else:
                        sender(id, 'Я тебя не понимаю.')
    except:
        sleep(1)

Мне нужно, чтобы бот также показывал погоду. Как это возможно осуществить? Прочитал много статей, но полезных не нашёл.


Ответы (1 шт):

Автор решения: Anaconda

Создайте функцию, например, def weather(). В эту функцию занесите код, отслеживающий погоду (на такую тему есть много уроков). И по своей схеме: если пользователь вводит слово "погода", то выполняется функция weather и пишет в чат погоду.

Такой способ подойдëт?

→ Ссылка