код основа бота фильмов | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

код основа бота фильмов

Sugar

Джун
Автор темы
8 Янв 2023
44
8
0
короче есть код который я называю не гавнокод а код для доработки есть админ панелька для добавления фильмов и простейший интерфейс
Python:
import logging
import random

from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import Text
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.types import ParseMode
from aiogram.utils import executor

# Настройка логирования
logging.basicConfig(level=logging.INFO)

# Создание экземпляров бота и диспетчера
TOKEN = "токен въеби"
bot = Bot(token=TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

# Создание класса для представления состояний бота
class AdminPanel(StatesGroup):
    waiting_for_message = State()
    waiting_for_movie = State()

# Определение функции для отправки сообщения всем пользователям
async def broadcast_message(message: str):
    async with dp.bot.get_updates() as updates:
        for update in updates:
            if update.message and update.message.chat.type == types.ChatType.PRIVATE:
                await update.message.answer(message)

# Определение функции для добавления фильма в список
async def add_movie(movie: str, number: str, state: FSMContext):
    async with state.proxy() as data:
        if "movies" not in data:
            data["movies"] = {}
        data["movies"][number] = movie
        await state.finish()

# Определение функции для получения случайного фильма из списка
async def get_random_movie(state: FSMContext) -> str:
    async with state.proxy() as data:
        if "movies" not in data:
            data["movies"] = {}
        if len(data["movies"]) == 0:
            return "Фильмы еще не добавлены"
        number, movie = random.choice(list(data["movies"].items()))
        return f"Фильм с номером {number}: {movie}"

# Обработчик команды /start
@dp.message_handler(commands=["start"])
async def cmd_start(message: types.Message):
    await message.answer("Привет! Отправь мне код, и я дам тебе название фильма.")

# Обработчик сообщений от пользователя
@dp.message_handler(Text(equals=["1234", "5678", "9012"]))
async def send_movie(message: types.Message, state: FSMContext):
    movie = await get_random_movie(state)
    await message.answer(f"Фильм для кода {message.text}: {movie}")

# Обработчик команды /admin
@dp.message_handler(commands=["admin"])
async def cmd_admin(message: types.Message):
    # Проверка, является ли пользователь администратором
    if message.from_user.id != свой айди:
        return
    # Отображение админ-панели
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add(types.KeyboardButton("Отправить сообщение всем пользователям"))
    keyboard.add(types.KeyboardButton("Добавить фильм"))
    await message.answer("Админ-панель:", reply_markup=keyboard)
    await AdminPanel.waiting_for_message.set()

# Обработчик сообщений админ-панели
@dp.message_handler(state=AdminPanel.waiting_for_message)
async def admin_panel_handler(message: types.Message, state: FSMContext):
    if message.text == "Отправить сообщение всем пользователям":
        await message.answer("Введите сообщение для отправки:")
        await AdminPanel.waiting_for_message.set()
    elif message.text == "Добавить фильм":
        await message.answer("Введите номер фильма:")
        await AdminPanel.waiting_for_movie.set()

# Обработчик сообщений после ввода сообщения для рассылки
@dp.message_handler(state=AdminPanel.waiting_for_message)
async def send_message_to_users(message: types.Message, state: FSMContext):
    await broadcast_message(message.text)
    await message.answer("Сообщение успешно отправлено всем пользователям.")
    await state.finish()

# Обработчик сообщений после ввода номера фильма для добавления
@dp.message_handler(state=AdminPanel.waiting_for_movie)
async def add_movie_number_handler(message: types.Message, state: FSMContext):
    await message.answer("Введите название фильма:")
    await AdminPanel.waiting_for_movie.next()

# Обработчик сообщений после ввода названия фильма для добавления
@dp.message_handler(state=AdminPanel.waiting_for_movie)
async def add_movie_handler(message: types.Message, state: FSMContext):
    number = message.text
    movie = message.text
    await add_movie(movie, number, state)
    await message.answer("Фильм успешно добавлен.")
    await state.finish()

# Запуск бота
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
 
Like
  • 1
Реакции: 1 user
Активность:
Пока что здесь никого нет