Загрузка...

Скрипт Обновлен | Автоподнятие тем в телеграмм боте + Исходный код

Тема в разделе Python создана пользователем inletah 12 июл 2024. (поднята 7 июн 2025 в 21:46) 8256 просмотров

Загрузка...
  1. inletah
    inletah Автор темы 12 июл 2024 Уууууууу реклама - lolz.live/threads/7756293/
    [IMG]
    Привет. Я Киана, Киндред. Зовите как хотите.
    Кароче, представляю вам телеграмм бота автоматического поднятия тем на форуме.
    - Добавление тем в список для поднятия.
    - Удаление тем из списка.
    - Просмотр списка тем.
    - Ручное поднятие всех тем в списке / автоподнятие.
    - Автоматическое поднятие всех тем каждые n часов. Указываете в боте время для своей группы.
    [IMG]
    Запуск бота - /start
    После запуска представляется панель с кнопками для работы в боте.
    - API_TOKEN: токен вашего Telegram бота
    - AUTH_TOKEN: токен авторизации lolz.guru

    [IMG]

    Там еще и картинка. Она красивая.​
    Ну типо гитхаб - https://github.com/qiyanaitsme/AutoPumpLOLZ/
    Установка - качаете, в cmd прописываете cd путь до скрипта и pip install -r requirements.txt
    Настраиваете токен бота, токен лолза суете и запускаете.​
    -Внедрена полностью асинхронная архитектура с использованием aiohttp и aiosqlite
    -Добавлен отдельный конфигурационный файл (config.json) для управления настройками
    -Реализована модульная структура с отдельными классами для работы с базой данных, API и логикой бота
    -Улучшено получение информации о темах, включая их заголовки через API
    -Улучшена обработка ошибок и логирование во всех основных функциях
     
    12 июл 2024 Изменено
    1. Посмотреть предыдущие комментарии (6)
    2. Kandaa
      inletah, киана киндред а ты правда анимешка-девочка или нет
  2. биллиногами
    биллиногами 6 дек 2024 Банки|Турция|Верификации|Биржи - lzt.lol/TUR :zerotwo:
    :omg: сочно смотрится, щя закину себе на дедик буду тестировать , спасибо!
     
    1. Посмотреть предыдущие комментарии (1)
    2. биллиногами
      krutyshkin, да я чет прикола не понял у меня не вышло я и забил , позже попробую
    3. inletah Автор темы
  3. БРЕДИШЬ
    БРЕДИШЬ 12 июл 2024 ЛУЧШИЕ ВЕРИФИКАЦИИ - https://lolz.live/threads/4228395/ 9978 1 июл 2020
    А вот это годно, еще и красиво :+rep:
     
  4. панан
    панан 12 июл 2024 twitch party - новости twitch https://t.me/twitchpaty 16 696 28 апр 2021
    еба ты кодер, удобная штука
     
  5. OLEGator
    OLEGator 12 июл 2024 Поздняков. Подписаться 13 807 14 авг 2019
    Ну это намного удобнее чем расширение на тамперманки.
     
  6. Bentley
    Bentley 12 июл 2024 13 205 22 май 2018
    Годно
     
  7. kingofchocopie
    kingofchocopie 12 июл 2024 :life: 3691 13 мар 2023
    Дизайн красивый
     
  8. SUFA
    SUFA 12 июл 2024 КНОПКА БАБЛО$ - https://lolz.live/threads/8464084/ 12 457 27 окт 2022
    Это новый уровень :cat_ayo:
     
  9. PowerDevil
    PowerDevil 12 июл 2024 12 076 27 авг 2022
    Хорошая задумка
    Но без loguru и почему в 1 файле?
    --- Сообщение объединено с предыдущим 12 июл 2024
    Python
    from loguru import logger
    import asyncio
    import requests
    import sqlite3
    from aiogram import Bot, Dispatcher, types
    from aiogram.contrib.middlewares.logging import LoggingMiddleware
    from aiogram.types import ParseMode, InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery
    from aiogram.utils import executor
    import re

    API_TOKEN = ''
    IMG_URL = 'https://wallpapers-clan.com/wp-content/uploads/2024/04/dark-anime-girl-with-red-eyes-desktop-wallpaper-preview.jpg'
    AUTH_TOKEN = ''
    AUTHOR_URL = 'https://lolz.live/qiyanalol/'

    logger.add("file_{time}.log", rotation="1 day")
    bot = Bot(token=API_TOKEN)
    dp = Dispatcher(bot)
    dp.middleware.setup(LoggingMiddleware())

    conn = sqlite3.connect('threads.db')
    cursor = conn.cursor()
    cursor.execute('''CREATE TABLE IF NOT EXISTS threads (id INTEGER PRIMARY KEY, thread_id TEXT UNIQUE)''')
    conn.commit()

    def bump_thread(thread_id):
    url = f"https://api.zelenka.guru/threads/{thread_id}/bump"

    headers = {
    "accept": "application/json",
    "authorization": f"Bearer {AUTH_TOKEN}"
    }

    response = requests.post(url, headers=headers)
    response_data = response.json()

    if response.status_code == 200:
    try:
    error_message = response_data["errors"][0]

    time_match = re.search(r'(\d+)\s+часов\s+(\d+)\с+минут\s+(\d+)\с+секунд', error_message)
    if time_match:
    hours, minutes, seconds = map(int, time_match.groups())
    return f"Вы не можете поднять тему. Вам осталось ждать - {hours} часов, {minutes} минут, {seconds} секунд."
    except (IndexError, KeyError):
    pass
    return "Вы подняли тему."
    else:
    return f"Ошибка при поднятии темы {thread_id}: {response.status_code}"

    def get_all_threads():
    cursor.execute("SELECT thread_id FROM threads")
    return cursor.fetchall()

    def add_thread_to_db(thread_id):
    try:
    cursor.execute("INSERT INTO threads (thread_id) VALUES (?)", (thread_id,))
    conn.commit()
    return True
    except sqlite3.IntegrityError:
    return False

    def delete_thread_from_db(thread_id):
    cursor.execute("DELETE FROM threads WHERE thread_id = ?", (thread_id,))
    conn.commit()

    @dp.callback_query_handler(lambda c: c.data == 'add_thread')
    async def process_add_callback(callback_query: CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    await bot.send_message(callback_query.from_user.id,
    "Введите ID тем через запятую для добавления:")

    @dp.message_handler(lambda message: ',' in message.text)
    async def add_threads(message: types.Message):
    thread_ids = message.text.split(',')
    added_threads = []
    for thread_id in thread_ids:
    thread_id = thread_id.strip()
    if thread_id.isdigit():
    if add_thread_to_db(thread_id):
    added_threads.append(thread_id)
    logger.info(f"Thread ID {thread_id} added.")
    else:
    await message.reply(f"Тема с ID {thread_id} уже есть в списке.")
    logger.warning(f"Thread ID {thread_id} already exists.")
    if added_threads:
    await message.reply(f"Добавлены темы с ID: {', '.join(added_threads)}")
    else:
    await message.reply("Не удалось добавить темы. Убедитесь, что вы ввели корректные ID через запятую.")
    await send_welcome(message)

    @dp.callback_query_handler(lambda c: c.data == 'delete_thread')
    async def process_delete_callback(callback_query: CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    threads = get_all_threads()
    if not threads:
    await bot.send_message(callback_query.from_user.id, "Список тем пуст.")
    logger.info("Thread list is empty.")
    return

    keyboard = InlineKeyboardMarkup()
    for thread in threads:
    keyboard.add(InlineKeyboardButton(thread[0], callback_data=f'delete_{thread[0]}'))
    await bot.send_message(callback_query.from_user.id, "Выберите тему для удаления:", reply_markup=keyboard)

    @dp.callback_query_handler(lambda c: c.data.startswith('delete_'))
    async def process_delete_thread_callback(callback_query: CallbackQuery):
    thread_id = callback_query.data.split('_')[1]
    delete_thread_from_db(thread_id)
    await bot.answer_callback_query(callback_query.id, text=f"Тема {thread_id} удалена.")
    logger.info(f"Thread ID {thread_id} deleted.")

    threads = get_all_threads()
    if threads:
    await process_delete_callback(callback_query)
    else:
    await send_welcome(callback_query.message)

    @dp.callback_query_handler(lambda c: c.data == 'list_threads')
    async def process_list_callback(callback_query: CallbackQuery):
    threads = get_all_threads()
    if threads:
    await bot.send_message(callback_query.from_user.id,
    "Список тем:\n" + "\n".join([thread[0] for thread in threads]))
    logger.info("Thread list sent to user.")
    else:
    await bot.send_message(callback_query.from_user.id, "Список тем пуст.")
    logger.info("Thread list is empty.")
    await send_welcome(callback_query.message)

    @dp.callback_query_handler(lambda c: c.data == 'bump_threads')
    async def process_bump_callback(callback_query: CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    await bump_all_threads(callback_query.from_user.id)
    await send_welcome(callback_query.message)

    @dp.message_handler(commands=['start', 'help'])
    async def send_welcome(message: types.Message):
    keyboard = InlineKeyboardMarkup(row_width=3).add(
    InlineKeyboardButton("Список тем для апа", callback_data='list_threads'),
    InlineKeyboardButton("Добавить тему", callback_data='add_thread'),
    InlineKeyboardButton("Удалить тему", callback_data='delete_thread'),
    InlineKeyboardButton("Поднять темы", callback_data='bump_threads'),
    InlineKeyboardButton("Автор", url=AUTHOR_URL)
    )
    await message.reply_photo(IMG_URL,
    caption="Привет! Я бот для поднятия тем. Выбери действие:",
    reply_markup=keyboard)

    async def scheduled_bump():
    while True:
    await asyncio.sleep(12 * 3600)
    await bump_all_threads()

    async def bump_all_threads(user_id=None):
    threads = get_all_threads()
    if not threads:
    if user_id:
    await bot.send_message(user_id, "Список тем пуст.")
    logger.info("Thread list is empty.")
    return

    for thread in threads:
    thread_id = thread[0]
    result = bump_thread(thread_id)
    if user_id:
    await bot.send_message(user_id, result)
    logger.info(result)
    await asyncio.sleep(5)

    if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.create_task(scheduled_bump())
    executor.start_polling(dp, skip_updates=True)
     
    12 июл 2024 Изменено
    1. inletah Автор темы
      PowerDevil, потому что код писал на работе и там нельзя вообще за питоном сидеть. Сидел кодил в блокноте
  10. Удаленный пользователь 6039403
    Это как я понял создаешь своего бота и он каждые 12 часов(для моей группы) будет апать темы которые я укажу ?и ещё нужно ли где-то хостить этот бот на дедике там напрмиер или где?
     
    1. inletah Автор темы
      @КесаревоСечение, да. разницы нет. хоть термукс
    2. Удаленный пользователь 6039403
    3. inletah Автор темы
  11. NeverGrafov
    NeverGrafov 24 июл 2024 :doomer: Товары на маркете | В закрепе вся инфа 5929 25 авг 2023
    о, в заметки
     
  12. ItsNeverLight
    ItsNeverLight 13 сен 2024 пишите мне кто-нибудь 135 7 фев 2019
    это вообще легально нахуй?
     
  13. God_likeGL
    God_likeGL Layer 1 6 окт 2024 ЛУЧШИЕ ВЕРИФИКАЦИИ - lolz.live/threads/4228395/ :+rep: 27 744 30 окт 2018

     
    1. Посмотреть предыдущие комментарии (9)
    2. God_likeGL Layer 1

    3. inletah Автор темы
      God_likeGL, да. я почти все скрипты пишу с таким уклоном, чтобы можно было и на телефоне развернуть
      6 окт 2024 Изменено
  14. кринж
    Я так понял, апать может абсолютно любой юзер телеграма
    --- Сообщение объединено с предыдущим 9 фев 2025
    и добавалять и удалять темы тоже
     
    1. inletah Автор темы
      кринж, к чему это написано. Создадим бота с длинным названием и нет проблем. Пока такой найдешь - бота уже перенесут
  15. L33T_ADMXDS
    L33T_ADMXDS 25 мар 2025 Заблокирован(а) 399 5 июн 2024
    Всё отлично)
    Спасибо за ворк inletah
    [IMG]
     
  16. LifeFounder
    LifeFounder 23 апр 2025 :catzaza: 20 129 25 сен 2018
    Вопрос на лям, указано что поднятие раз в 12 часов, но на следующий день вижу что темы не поднимаются сами, тут нужно каждый раз самостоятельно тыкать что-ли?
     
    1. inletah Автор темы
      LifeFounder, 1-2 раза надо поднять и потом само подниматься будет
Top