· 5 years ago · Jul 07, 2020, 08:10 PM
1import logging
2
3from aiogram import Bot, Dispatcher, executor, types
4
5from pyowm import OWM
6from pyowm.utils.config import get_default_config
7
8import sqlite3
9
10from config import *
11
12# ------------------------- ІНІЦІАЛІЗАЦІЯ -------------------------
13# ------------------------- LOGGING
14logging.basicConfig(level=logging.DEBUG)
15# ------------------------- AIOGRAM
16bot = Bot(token=TelegramToken)
17dp = Dispatcher(bot)
18
19# ------------------------- PYOWM
20config_dict = get_default_config()
21config_dict['language'] = 'ua, uk'
22owm = OWM(OpenWeatherMapToken, config_dict)
23mgr = owm.weather_manager()
24observation = mgr.weather_at_place("Львів")
25w = observation.weather
26
27# ------------------------- SQLITE3
28DataBase = sqlite3.connect("DataBase.db")
29
30Cursor = DataBase.cursor()
31
32Cursor.executescript("""CREATE TABLE IF NOT EXISTS Users(Id TEXT, Notification BOOLEAN);
33CREATE TABLE IF NOT EXISTS Weather(Weather TEXT, MinTemp REAL, Temp REAL, MaxTemp REAL);""")
34
35DataBase.commit()
36
37
38# ------------------------- ФУНКЦІЇ -------------------------
39def Weather():
40 Weather = w.status
41 MinTemp = w.temperature("celsius")["temp_min"]
42 Temp = w.temperature("celsius")["temp"]
43 MaxTemp = w.temperature("celsius")["temp_max"]
44
45 Cursor.execute("DROP TABLE IF EXISTS Weather")
46 DataBase.commit()
47
48 Cursor.execute("CREATE TABLE IF NOT EXISTS Weather(Weather TEXT, MinTemp REAL, Temp REAL, MaxTemp REAL)")
49 DataBase.commit()
50
51 Cursor.execute(f"SELECT Weather FROM Weather")
52 if Cursor.fetchone() is None:
53 Cursor.execute(f"INSERT INTO Weather VALUES(?, ?, ?, ?)", (Weather, MinTemp, Temp, MaxTemp))
54 DataBase.commit()
55
56
57Weather()
58
59
60# ------------------------- БОТ -------------------------
61@dp.message_handler(commands=["start"])
62async def send_welcome(message: types.Message):
63 await bot.send_message(message.from_user.id, """Вітаю.
64Я допоможу Вам спостерігати за погодою у м.Львів.
65Я завжди повідомлю Вас про зміну погоди.
66
67Щоб дізнатися список команд, введіть: /help""")
68 Cursor.execute(f"SELECT Id FROM Users WHERE Id = {message.from_user.id}")
69 if Cursor.fetchone() is None:
70 Cursor.execute(f"INSERT INTO Users VALUES(?, ?)", (message.from_user.id, True))
71 DataBase.commit()
72 await bot.send_message(message.from_user.id, "Успішно! Ваш аккаунт зареєстровано")
73
74
75@dp.message_handler(commands=["help"])
76async def send_welcome(message: types.Message):
77 await bot.send_message(message.from_user.id, """Команди:
78/start - Реєстрація
79/help - Список команд
80/weather - Погода (На даний момент)""")
81
82
83@dp.message_handler(commands=["weather"])
84async def send_welcome(message: types.Message):
85 for i in Cursor.execute("SELECT * FROM Weather"):
86 Weather = i[0]
87 MinTemp = i[1]
88 Temp = i[2]
89 MaxTemp = i[3]
90 await bot.send_message(message.from_user.id, f"""Погода (На даний момент):
91Погода: {Weather}
92Температура: {Temp}""")
93
94
95if __name__ == '__main__':
96 executor.start_polling(dp, skip_updates=True)