нулевой патч для третьего коммита, только убирает venv
This commit is contained in:
197
app/share_2.py
Normal file
197
app/share_2.py
Normal file
@@ -0,0 +1,197 @@
|
||||
import asyncio
|
||||
from aiogram import F, Router, Bot
|
||||
from aiogram.filters import CommandStart, Command, CommandObject
|
||||
from aiogram.types import ContentType
|
||||
from aiogram.types import Message, CallbackQuery
|
||||
from aiogram.types import ReplyKeyboardRemove
|
||||
from aiogram.types import InputMediaPhoto, InputMediaVideo, InputMediaDocument
|
||||
from aiogram.enums import ParseMode
|
||||
from aiogram.fsm.state import State, StatesGroup
|
||||
from aiogram.fsm.context import FSMContext
|
||||
import app.share_kb as share_kb
|
||||
import sqlite3
|
||||
import re
|
||||
from random import randint
|
||||
from config import ADMIN_ID, TOKEN
|
||||
|
||||
share_router = Router()
|
||||
|
||||
TARGET_USER_ID = 7320951369
|
||||
|
||||
# Определяем состояния
|
||||
class ForwardMessage(StatesGroup):
|
||||
waiting_for_message = State()
|
||||
share_begin = State()
|
||||
share_msg = State()
|
||||
|
||||
async def send_media(bot: Bot, chat_id: int, message: Message):
|
||||
"""Функция для точной пересылки сообщения без изменений"""
|
||||
if message.photo:
|
||||
await bot.send_photo(
|
||||
chat_id=chat_id,
|
||||
photo=message.photo[-1].file_id,
|
||||
caption=message.caption
|
||||
)
|
||||
elif message.video:
|
||||
await bot.send_video(
|
||||
chat_id=chat_id,
|
||||
video=message.video.file_id,
|
||||
caption=message.caption
|
||||
)
|
||||
elif message.document:
|
||||
await bot.send_document(
|
||||
chat_id=chat_id,
|
||||
document=message.document.file_id,
|
||||
caption=message.caption
|
||||
)
|
||||
elif message.text:
|
||||
await bot.send_message(
|
||||
chat_id=chat_id,
|
||||
text=message.text
|
||||
)
|
||||
|
||||
|
||||
@share_router.message(Command("share"))
|
||||
async def command_mid_handler(message: Message, state: FSMContext) -> None:
|
||||
if message.from_user.id == ADMIN_ID:
|
||||
await state.set_state(ForwardMessage.waiting_for_message)
|
||||
# Сохраняем сообщение в state
|
||||
await message.answer("Теперь отправьте сообщение, которое хотите переслать.")
|
||||
else:
|
||||
await message.answer("вы не являетесь администратором")
|
||||
|
||||
@share_router.message(ForwardMessage.waiting_for_message)
|
||||
async def process_message_to_forward(message: Message, state: FSMContext, bot: Bot):
|
||||
"""Обработчик для пересылки сообщений
|
||||
"""
|
||||
await state.update_data(original_message=message)
|
||||
try:
|
||||
with sqlite3.connect('users.db') as base:
|
||||
cur = base.cursor()
|
||||
cur.execute("SELECT id FROM users")
|
||||
|
||||
for user_id, in cur.fetchall():
|
||||
await send_media(bot, user_id, message)
|
||||
print(user_id, "получил пересылку")
|
||||
|
||||
await message.answer("✅ Сообщение переслано всем пользователям")
|
||||
|
||||
finally:
|
||||
await state.clear()
|
||||
|
||||
# @share_router.message(ForwardMessage.waiting_for_message)
|
||||
# async def process_message_to_forward(message: Message, state: FSMContext, bot: Bot) -> None:
|
||||
# """
|
||||
# Обработчик для точной пересылки сообщения
|
||||
# """
|
||||
# await state.update_data(original_message=message) # Сохраняем сообщение в state
|
||||
# data = await state.get_data()
|
||||
# message_to_forward = data.get("original_message")
|
||||
|
||||
# if message_to_forward is None:
|
||||
# await message.answer("Не удалось найти сообщение для пересылки.")
|
||||
# await state.clear()
|
||||
# return
|
||||
|
||||
# with sqlite3.connect('users.db') as base:
|
||||
# cur = base.cursor()
|
||||
# cur.execute("SELECT id FROM users")
|
||||
# users_id = cur.fetchall()
|
||||
|
||||
# for user_id, in users_id:
|
||||
# await send_media(
|
||||
# bot=bot,
|
||||
# chat_id=user_id,
|
||||
# message=message_to_forward
|
||||
# )
|
||||
# await asyncio.sleep(0.1)
|
||||
|
||||
# await message.answer("Сообщение переслано всем пользователям")
|
||||
# await state.clear()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# @share_router.message(Command('share'))
|
||||
# async def command_start_handler(message: Message, state: FSMContext) -> None:
|
||||
# await message.answer(
|
||||
# "Привет! Я бот для пересылки сообщений. Отправь мне любое сообщение "
|
||||
# "(текст, фото, видео, документ и т.д.), и я смогу его переслать.\n\n"
|
||||
# "После того, как ты отправишь мне сообщение, я попрошу тебя указать ID чата, куда его переслать."
|
||||
# )
|
||||
# await state.set_state(ForwardStates.waiting_for_message)
|
||||
|
||||
# @share_router.message(ForwardStates.waiting_for_message)
|
||||
# async def process_message_to_forward(message: Message, state: FSMContext) -> None:
|
||||
# await state.update_data(
|
||||
# original_message_id=message.message_id,
|
||||
# original_chat_id=message.chat.id
|
||||
# )
|
||||
# await message.answer(
|
||||
# "Отлично! Теперь отправь мне ID чата (или username группы/канала), куда нужно переслать это сообщение. "
|
||||
# "Для пересылки в личный чат, можешь использовать свой ID."
|
||||
# )
|
||||
# await state.set_state(ForwardStates.waiting_for_target_chat)
|
||||
|
||||
# @share_router.message(ForwardStates.waiting_for_target_chat)
|
||||
# async def forward_the_message(message: Message, state: FSMContext, bot: Bot) -> None:
|
||||
# data = await state.get_data()
|
||||
# original_message_id = data.get('original_message_id')
|
||||
# original_chat_id = data.get('original_chat_id')
|
||||
# target_chat_id = message.text
|
||||
|
||||
# if not original_message_id or not original_chat_id:
|
||||
# await message.answer("Произошла ошибка: не удалось найти исходное сообщение для пересылки. Пожалуйста, начни сначала (/start).")
|
||||
# await state.clear()
|
||||
# return
|
||||
|
||||
# try:
|
||||
# await bot.copy_message(
|
||||
# chat_id=target_chat_id,
|
||||
# from_chat_id=original_chat_id,
|
||||
# message_id=original_message_id
|
||||
# )
|
||||
|
||||
# escaped_target_chat_id = escape_markdown_v2(target_chat_id)
|
||||
|
||||
# await message.answer(
|
||||
# f"Сообщение успешно переслано в чат с ID: {escaped_target_chat_id}.",
|
||||
# parse_mode=ParseMode.MARKDOWN_V2
|
||||
# )
|
||||
# except Exception as e:
|
||||
# escaped_error_message = escape_markdown_v2(str(e))
|
||||
# await message.answer(
|
||||
# f"Не удалось переслать сообщение\\. Возможно, указан неверный ID чата, или у бота нет прав для отправки сообщений в этот чат\\. Ошибка: {escaped_error_message}`",
|
||||
# parse_mode=ParseMode.MARKDOWN_V2
|
||||
# )
|
||||
# finally:
|
||||
# await state.clear()
|
||||
|
||||
# @share_router.message()
|
||||
# async def echo_handler(message: Message) -> None:
|
||||
# if message.text:
|
||||
# await message.answer(
|
||||
# "Я получил твое сообщение, но сейчас я жду команду или ID чата. "
|
||||
# "Если хочешь начать пересылку, используй /start."
|
||||
# )
|
Reference in New Issue
Block a user