Commited backup

This commit is contained in:
2025-07-10 21:02:34 +03:00
parent 952c1001e3
commit da0b80823e
1310 changed files with 254133 additions and 41 deletions

View File

@@ -0,0 +1,162 @@
__version__ = (1, 0, 6)
#
# @@@@@@ @@@@@@ @@@@@@@ @@@@@@@ @@@@@@ @@@@@@@@@@ @@@@@@ @@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@
# @@@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@@@@ @@@@@@@@ @@@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@@@@@
# @@! @@@ !@@ @@! @@! @@@ @@! @@@ @@! @@! @@! @@! @@@ @@! @@@ @@! @@@ @@! @@! !@@
# !@! @!@ !@! !@! !@! @!@ !@! @!@ !@! !@! !@! !@! @!@ !@! @!@ !@! @!@ !@! !@! !@!
# @!@!@!@! !!@@!! @!! @!@!!@! @!@ !@! @!! !!@ @!@ @!@ !@! @!@ !@! @!@ !@! @!! @!!!:! !!@@!!
# !!!@!!!! !!@!!! !!! !!@!@! !@! !!! !@! ! !@! !@! !!! !@! !!! !@! !!! !!! !!!!!: !!@!!!
# !!: !!! !:! !!: !!: :!! !!: !!! !!: !!: !!: !!! !!: !!! !!: !!! !!: !!: !:!
# :!: !:! !:! :!: :!: !:! :!: !:! :!: :!: :!: !:! :!: !:! :!: !:! :!: :!: !:!
# :: ::: :::: :: :: :: ::: ::::: :: ::: :: ::::: :: :::: :: ::::: :: :: :::: :: :::: :::: ::
# : : : :: : : : : : : : : : : : : : : :: : : : : : : :: : : : :: :: :: : :
#
# © Copyright 2024
#
# https://t.me/Den4ikSuperOstryyPer4ik
# and
# https://t.me/ToXicUse
#
# 🔒 Licensed under the GNU AGPLv3
# https://www.gnu.org/licenses/agpl-3.0.html
#
# meta developer: @AstroModules
# meta banner: https://raw.githubusercontent.com/Den4ikSuperOstryyPer4ik/Astro-modules/main/Banners/AstroWeather.jpg
import contextlib
import random
import requests
from .. import loader, utils
class AstroWeatherMod(loader.Module):
"""Модуль для получения информации о погоде в Вашем городе, в красивом формате"""
strings = {
"name": "AstroWeather",
"error": "<emoji document_id=5447644880824181073>⚠️</emoji> <b>Ошибка</b>",
"api_error": (
"<emoji document_id=5240241223632954241>🚫</emoji> <b>Вы не указали API ключ</b>!\n"
"<emoji document_id=5210956306952758910>👀</emoji> <code>Пожалуйста, укажите его в конфиге ниже</code>"
),
"search": "{} <b>Поиск информации о погоде в городе</b> <code>{}</code>.."
}
async def text(self, temperature: int, veter: int, sky, hum, city, moji):
"""Generate text"""
sky = {
"Clear": "Чистое",
"Mist": "Туман",
"Clouds": "Облачно",
"Rain": "Дождь",
"Snow": "Снег"
}[sky]
t_emoji = (
"<emoji document_id=5204204137327111088>🔥</emoji>"
if temperature > 0
else "<emoji document_id=5267186302259835638>❄️</emoji>"
)
v_emoji = (
"<emoji document_id=5447183459602669338>📉</emoji>"
if veter >= 15
else "<emoji document_id=5449683594425410231>🔼</emoji>"
)
r_emoji = random.choice([
"<emoji document_id=5208554136039073738>🌙</emoji>",
"<emoji document_id=5444932797955317203>🐾</emoji>",
"<emoji document_id=5458585073060160944>🍀</emoji>",
"<emoji document_id=5206587423269593472>🌈</emoji>",
"<emoji document_id=5413390588198265552>💤</emoji>",
"<emoji document_id=5435981940081566607>🌺</emoji>"
])
sity_emoji = random.choice([
"<emoji document_id=5416117059207572332>⏩</emoji>",
"<emoji document_id=5447410659077661506>🌐</emoji>"
])
weather = (
f"{r_emoji} <b>Погода в {city.title()}:</b>\n\n"
f"{sity_emoji} <b>Город:</b> <code>{city.title()}</code>\n"
f"{t_emoji} <b>Температура:</b> <code>{temperature}°C</code>\n"
f"<emoji document_id=5192891734635322759>💦</emoji> <b>Влажность:</b> <code>{hum}%</code>\n"
f"{v_emoji} <b>Скорость ветра:</b> <code>{veter}м/с</code>\n"
f"{moji} <b>Небо:</b> <code>{sky}</code>"
)
return weather
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"api_key",
None,
lambda: "Api key. Получить можно по туториалу https://t.me/help_code/12",
validator=loader.validators.Hidden()
)
)
async def get_weather(self, city_id):
with contextlib.suppress(Exception):
api_key = self.config["api_key"]
result = requests.get("http://api.openweathermap.org/data/2.5/weather", params={"q": city_id, "units": "metric", "APPID": api_key})
result_json = result.json()
if result_json["cod"] != 200:
return
weather = {}
weather["temp"] = round(result_json["main"]["temp"])
weather["hum"] = result_json["main"]["humidity"]
weather["wind_speed"] = result_json["wind"]["speed"]
weather["sky"] = result_json["weather"][0]["main"]
if weather["sky"] == "Clouds":
weather["sky_emoji"] = "<emoji document_id=5391322797123314747>☁️</emoji>"
if weather["sky"] == "Rain":
weather["sky_emoji"] = "<emoji document_id=5224681716760715555>🌧️</emoji>"
if weather["sky"] == "Clear":
weather["sky_emoji"] = "<emoji document_id=5262761021361104549>☀️</emoji>"
if weather["sky"] == "Mist":
weather["sky_emoji"] = "<emoji document_id=5453984836668627018>🌫️</emoji>"
if weather["sky"] == "Snow":
weather["sky_emoji"] = "<emoji document_id=5282833267551117457>🌨️</emoji>"
return weather
@loader.command()
async def aw(self, message):
"""<город> - узнать погоду в указанном городе"""
search_moji = random.choice([
"<emoji document_id=5443038326535759644>💬</emoji>",
"<emoji document_id=5452069934089641166>🔎</emoji>"
])
city = utils.get_args_raw(message)
city = city.title()
getting = await utils.answer(message, self.strings("search").format(search_moji, city))
if self.config["api_key"] is None:
await utils.answer(getting, self.strings("api_error"))
msg = await self.client.send_message(message.chat.id, "<b>Открываю конфиг...</b>")
await self.allmodules.commands["config"](
await utils.answer(msg, f"{self.get_prefix()}config AstroWeather")
)
return
try:
dict_wea = await self.get_weather(city)
temp = dict_wea["temp"]
hum = dict_wea["hum"]
speed = dict_wea["wind_speed"]
sky = dict_wea["sky"]
moji = dict_wea["sky_emoji"]
text = await self.text(temp, speed, sky, hum, city, moji)
await utils.answer(getting, text)
except Exception:
await utils.answer(getting, self.strings("error"))