нулевой патч для третьего коммита, только убирает venv

This commit is contained in:
2025-07-22 14:20:42 +03:00
parent 8ddd4e6940
commit e12b70a706
6 changed files with 264 additions and 1 deletions

1
.gitignore vendored
View File

@@ -1,5 +1,6 @@
users.db
config.py
*.pyc
*.pyo
*.egg-info

1
app/debug_kb.py Normal file
View File

@@ -0,0 +1 @@
# пока что пустой, но в дальнейшем может быть использован

44
app/handliers_test.py Normal file
View File

@@ -0,0 +1,44 @@
"""на данный момент не работает, но а дальнейшем будет использован"""
# 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 Normal file
View 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."
# )

19
app/share_kb.py Normal file
View File

@@ -0,0 +1,19 @@
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='выберите действие')

View File

@@ -1 +1,2 @@
TOKEN=''
TOKEN=''
ADMIN=123456789