Compare commits
	
		
			1 Commits
		
	
	
		
			master
			...
			3ba5831c47
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3ba5831c47 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,5 @@ | ||||
| users.db | ||||
| config.py | ||||
|  | ||||
| *.pyc | ||||
| *.pyo | ||||
| *.egg-info | ||||
|   | ||||
| @@ -1 +0,0 @@ | ||||
| # пока что пустой, но в дальнейшем может быть использован | ||||
| @@ -1,44 +0,0 @@ | ||||
| """на данный момент не работает, но а дальнейшем будет использован""" | ||||
|  | ||||
|  | ||||
| # import asyncio | ||||
| # from aiogram import F, Router | ||||
| # from aiogram.filters import CommandStart, Command, CommandObject | ||||
| # from aiogram.types import Message, CallbackQuery  | ||||
| # from aiogram.enums import ParseMode | ||||
| # import app.keyboard as kb | ||||
| # import app.debug_kb as debug_kb | ||||
| # import sqlite3 | ||||
| # from random import randint | ||||
| # router = Router() | ||||
|  | ||||
| # @router.message(CommandStart()) | ||||
| # async def cmd_start(message: Message): | ||||
| #     base = sqlite3.connect('users.db') | ||||
|  | ||||
| #     cur = base.cursor() | ||||
|  | ||||
| #     insert_user = """INSERT OR IGNORE INTO users (first_name, last_name, username, id, is_bot, is_premium) | ||||
| #     VALUES (?, ?, ?, ?, ?, ?)""" | ||||
|  | ||||
| #     val = (message.from_user.first_name, message.from_user.last_name, message.from_user.username, | ||||
| #            message.from_user.id, message.from_user.is_bot, message.from_user.is_premium) | ||||
|  | ||||
| #     cur.execute(insert_user, val) | ||||
|  | ||||
| #     cur.execute("SELECT * FROM users") | ||||
| #     print(cur.fetchall()) | ||||
| #     base.commit() | ||||
|  | ||||
| #     base.close() | ||||
|  | ||||
| #     await message.answer("тестовый ответ") | ||||
|  | ||||
| # @router.message(Command("share")) | ||||
| # async def share_start(message: Message): | ||||
| #     pass | ||||
|  | ||||
| # @router.message(Command("echo")) | ||||
| # async def echo(message: Message): | ||||
| #     """Повторяет сообщение пользователя.""" | ||||
| #     await message.reply(message.text) | ||||
							
								
								
									
										197
									
								
								app/share_2.py
									
									
									
									
									
								
							
							
						
						
									
										197
									
								
								app/share_2.py
									
									
									
									
									
								
							| @@ -1,197 +0,0 @@ | ||||
| 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." | ||||
| #         ) | ||||
| @@ -1,19 +0,0 @@ | ||||
| from aiogram.types import ( | ||||
|     ReplyKeyboardMarkup, | ||||
|     KeyboardButton, | ||||
|     InlineKeyboardButton, | ||||
|     InlineKeyboardMarkup, | ||||
|     ReplyKeyboardRemove | ||||
| ) | ||||
| from aiogram.utils.keyboard import ReplyKeyboardBuilder, InlineKeyboardBuilder | ||||
| from aiogram.filters.callback_data import CallbackData | ||||
|  | ||||
| share_starting = InlineKeyboardMarkup(inline_keyboard=[ | ||||
|     [InlineKeyboardButton(text='да✅', callback_data='share_starting'), | ||||
|      InlineKeyboardButton(text='нет❌', callback_data='share_cancel')] | ||||
| ], resize_keyboard=True, input_field_placeholder='выберите действие') | ||||
|  | ||||
| share_send = InlineKeyboardMarkup(inline_keyboard=[ | ||||
|     [InlineKeyboardButton(text='да✅', callback_data='share_starting_send'), | ||||
|      InlineKeyboardButton(text='нет❌', callback_data='share_cancel')] | ||||
| ], resize_keyboard=True, input_field_placeholder='выберите действие') | ||||
| @@ -1,2 +1 @@ | ||||
| TOKEN='' | ||||
| ADMIN=123456789 | ||||
| TOKEN='7874457818:AAG0l0mh6WySjqCRFbgSk6Xud-V5T1BnvoI' | ||||
		Reference in New Issue
	
	Block a user