3.0 Выпуск в PrimoRU
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
# BotCode/inline/reklama.py
|
||||
# Работа с инлайн запросами на рекламу
|
||||
|
||||
from aiogram import Router, types
|
||||
from aiogram.types import InlineQueryResultPhoto
|
||||
from aiogram import Router
|
||||
from aiogram.types import (InlineQueryResultPhoto, InlineQuery, CallbackQuery,
|
||||
InlineKeyboardMarkup, InlineKeyboardButton)
|
||||
from BotLibrary import bot
|
||||
|
||||
# Настройка экспорта в модули
|
||||
@@ -14,13 +15,13 @@ f"""Это сообщение с изображением и инлайн кно
|
||||
|
||||
|
||||
@router.callback_query(lambda c: c.data == 'button_1')
|
||||
async def process_callback_button(callback_query: types.CallbackQuery) -> None:
|
||||
async def process_callback_button(callback_query: CallbackQuery) -> None:
|
||||
await bot.answer_callback_query(callback_query.id, text="Вы нажали первую кнопку!")
|
||||
await bot.send_message(callback_query.from_user.id, "Ответ на вашу кнопку.")
|
||||
|
||||
|
||||
@router.inline_query()
|
||||
async def inline_echo(inline_query: types.InlineQuery) -> None:
|
||||
async def inline_echo(inline_query: InlineQuery) -> None:
|
||||
# Содержимое запроса
|
||||
query = inline_query.query
|
||||
|
||||
@@ -36,10 +37,10 @@ async def inline_echo(inline_query: types.InlineQuery) -> None:
|
||||
photo_url=image_url, # URL изображения
|
||||
thumbnail_url=image_url, # Миниатюра изображения
|
||||
caption=text_msg, # Текст, который будет показываться под изображением
|
||||
reply_markup=types.InlineKeyboardMarkup(
|
||||
reply_markup=InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[types.InlineKeyboardButton(text="Посмотреть инфо-канал", url="https://t.me/adeptusfiziks")],
|
||||
[types.InlineKeyboardButton(text="Вторая кнопка", callback_data="button_1")],
|
||||
[InlineKeyboardButton(text="Посмотреть инфо-канал", url="https://t.me/adeptusfiziks")],
|
||||
[InlineKeyboardButton(text="Вторая кнопка", callback_data="button_1")],
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
@@ -2,15 +2,14 @@
|
||||
# Работа с командой /stats, для получения информации о себе
|
||||
|
||||
from aiogram import types
|
||||
from BotLibrary import CommandHandler, bot
|
||||
from SQLite3 import status_user
|
||||
from BotLibrary import CommandHandler, bot, db
|
||||
|
||||
# Настройки экспорта в модули
|
||||
__all__ = ("ban_cmd",)
|
||||
|
||||
# Функция блокировки пользователя
|
||||
async def ban_user(message: types.Message, *args, **kwargs) -> None:
|
||||
status = await status_user(message)
|
||||
status = db.get_user_status(message)
|
||||
if status not in ('Пользователь', 'Забаннен'):
|
||||
# Проверка, что команда вызвана с упоминанием пользователя
|
||||
args = message.text.split()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# BotCode/routers/commands/user_cmd/start_time_cmd.py
|
||||
#
|
||||
# Команда на выдачу погоды определенного города
|
||||
|
||||
from BotLibrary import CommandHandler
|
||||
from BotCode.utils import get_weather
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
from aiogram import Router, types
|
||||
from BotLibrary import *
|
||||
from SQLite3 import base_sql, status_user
|
||||
|
||||
# Настройка экспорта модулей и роутера
|
||||
__all__ = ("router",)
|
||||
@@ -12,6 +11,6 @@ router = Router(name="common_msg_router")
|
||||
# Обработчик всех сообщений
|
||||
@router.message()
|
||||
async def all_messages(message: types.Message) -> None:
|
||||
await base_sql(message)
|
||||
await status_user(message)
|
||||
db.update_user(message)
|
||||
db.update_user_messages(message)
|
||||
Logs.msg(message)
|
||||
|
||||
@@ -1,22 +1,34 @@
|
||||
# BotCode/utils/admin_lists.py
|
||||
# Составления листа администраторов
|
||||
|
||||
from aiogram.types import Message
|
||||
from BotLibrary import bot
|
||||
from ProjectsFiles import BotVar
|
||||
|
||||
# Настройки экспорта в модули
|
||||
__all__ = ("admin_lists",)
|
||||
|
||||
async def admin_lists(chat_id: int = None, message: Message = None) -> str:
|
||||
"""
|
||||
Функция составления словаря администраторов.
|
||||
|
||||
# Функция составления словаря администраторов
|
||||
async def admin_lists(chat_id: int) -> str:
|
||||
:param message: Объект сообщения от пользователя.
|
||||
:param chat_id: ID-чата в котором будет проводиться работа.
|
||||
:return: Строка с юзерами администрации.
|
||||
"""
|
||||
chat_id = chat_id if isinstance(chat_id, int) else message.chat.id
|
||||
admins = await bot.get_chat_administrators(chat_id)
|
||||
|
||||
# Формируем список упоминаний администраторов
|
||||
admin_mentions = []
|
||||
for admin in admins:
|
||||
if admin.user.is_bot:
|
||||
continue
|
||||
admin_mentions.append(
|
||||
if BotVar.parse_mode == "HTML":
|
||||
admin_mentions.append(
|
||||
f"@{admin.user.username}" if admin.user.username else f"<a href=\"tg://user?id={admin.user.id}\">{admin.user.full_name}</a>")
|
||||
|
||||
elif BotVar.parse_mode == "MarkdownV2":
|
||||
admin_mentions.append(
|
||||
f"@{admin.user.username}" if admin.user.username else f"[{admin.user.full_name}](tg://user?id={admin.user.id})")
|
||||
admins_text = ", ".join(admin_mentions) if admin_mentions else "Нет администраторов"
|
||||
return admins_text
|
||||
|
||||
@@ -8,18 +8,28 @@ from BotLibrary import bot
|
||||
# Настройки экспорта в модули
|
||||
__all__ = ("hidden_admins_message",)
|
||||
|
||||
|
||||
# Функция составления словаря администраторов
|
||||
async def hidden_admins_message(message: types.Message = None,
|
||||
chat_id: int = None,
|
||||
text: str = "",
|
||||
msg: bool = True, *args) -> str | None:
|
||||
"""
|
||||
Формирует скрытые ссылки на администраторов чата в Markdown-разметке.
|
||||
|
||||
:param message: Объект сообщения от пользователя (если chat_id не указан, ID чата берется из него).
|
||||
:param chat_id: ID чата, в котором нужно получить список администраторов (если не указан, берется из message).
|
||||
:param text: Дополнительный текст, который будет добавлен к результату.
|
||||
:param msg: Определяет, возвращать ли результат (True) или отправлять его в чат (False).
|
||||
:param args: Дополнительные аргументы (не используются, оставлены для совместимости с шаблоном).
|
||||
:return: Строка со скрытыми ссылками на администраторов и добавленным текстом (если msg=True), иначе None.
|
||||
"""
|
||||
chat_id = chat_id if isinstance(chat_id, int) else message.chat.id
|
||||
admins = await bot.get_chat_administrators(chat_id)
|
||||
|
||||
hidden_links = "".join(
|
||||
markdown.hide_link(f"tg://user?id={admin.user.id}")
|
||||
for admin in admins if not admin.user.is_bot
|
||||
)
|
||||
|
||||
result = f"{hidden_links}{text}"
|
||||
if msg:
|
||||
return result
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
import aiohttp
|
||||
from aiogram.types import Message
|
||||
from ProjectsFiles import weather_api_key
|
||||
|
||||
# Настройки экспорта в модули
|
||||
__all__ = ("get_weather",)
|
||||
|
||||
async def get_weather(message, *args) -> str:
|
||||
async def get_weather(message: Message, *args) -> str:
|
||||
"""
|
||||
Обрабатывает запрос о погоде для указанного города и возвращает информацию о текущей погоде.
|
||||
|
||||
:param message: Объект сообщения от пользователя.
|
||||
:return: Возвращает ответ о погоде в указанном городе.
|
||||
"""
|
||||
# Извлекаем город из сообщения
|
||||
command_parts = message.text.split(maxsplit=1)
|
||||
print(command_parts[1])
|
||||
@@ -33,10 +40,10 @@ async def get_weather(message, *args) -> str:
|
||||
wind = data["wind"]["speed"]
|
||||
|
||||
weather_today: str = (f"Погода <b>{city}</b>\n"
|
||||
f"☁️Погода: <b>{weather}</b>\n"
|
||||
f"🌡Температура: <b>{temp}°C</b>\n"
|
||||
f"💧Влажность: <b>{humidity}%</b>\n"
|
||||
f"💨Скорость ветра: <b>{wind} м/с</b>")
|
||||
f"☁️Погода: <b>{weather}</b>\n"
|
||||
f"🌡Температура: <b>{temp}°C</b>\n"
|
||||
f"💧Влажность: <b>{humidity}%</b>\n"
|
||||
f"💨Скорость ветра: <b>{wind} м/с</b>")
|
||||
await message.answer(weather_today)
|
||||
return weather_today
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user