нулевой патч для третьего коммита, только убирает venv
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
users.db
|
||||
config.py
|
||||
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.egg-info
|
||||
|
1
app/debug_kb.py
Normal file
1
app/debug_kb.py
Normal file
@@ -0,0 +1 @@
|
||||
# пока что пустой, но в дальнейшем может быть использован
|
44
app/handliers_test.py
Normal file
44
app/handliers_test.py
Normal 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
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."
|
||||
# )
|
19
app/share_kb.py
Normal file
19
app/share_kb.py
Normal 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='выберите действие')
|
Reference in New Issue
Block a user