создание модуля на хикку чтоб создавал отложеные с...

作成日: 2025年7月16日

使用モデル O3 by Chat01

質問

создание модуля на хикку чтоб создавал отложеные сообшение чтоб можно было настроить текст промежуток количество и во сколько отправлять

思考

Understanding request for Hikka module

The user wants a module for the Hikka userbot that sends scheduled messages. Specifically, they want the ability to configure the text, interval, message count, and send time. Hikka, being a Telegram userbot platform, allows creating plugins in Python, so I assume the user is asking for a plugin code to implement this functionality. I'll need to focus on how to handle timed messages, text input, interval adjustments, and message counts within a Hikka userbot context.

Designing Hikka plugin

The user wants a Hikka plugin to schedule messages with customizable text, interval, count, and send time. Hikka uses Telethon, and

Thought for 11 seconds

回答

Ниже — полнофункциональный пример плагина (Hikka module) для Telegram-userbot’а Hikka.
Он позволяет:

  • задавать текст будущего сообщения;
  • указать время первой отправки (формат HH:MM);
  • задать интервал между повторениями (в секундах, минутах или часах);
  • указать, сколько раз повторить рассылку.

После загрузки плагина появится команда .autosend

text
.autosend "<текст>" <кол-во_сообщений> <интервал> <HH:MM>

Пример

text
.autosend "Доброе утро!" 5 1h 09:00

Отправит «Доброе утро!» 5 раз: в 09:00, 10:00, 11:00, 12:00 и 13:00.


python
# -*- coding: utf-8 -*- # ⇝ filename: autosend.py # ⇝ requirements: telethon>=1.35 from .. import loader, utils from datetime import datetime, timedelta import asyncio import pytz # убедитесь, что библиотека установлена: pip install pytz class AutoSendMod(loader.Module): """Отложенная и повторяющаяся отправка сообщений""" strings = { "name": "AutoSend", "start": "<b>[AutoSend]</b> Запланировано <code>{}</code> сообщений; старт в <code>{}</code> (UTC+0)", "done": "<b>[AutoSend]</b> Отправка завершена", "bad_syntax": "<b>[AutoSend]</b> Использование:\n.autosend \"текст\" <кол-во> <интервал> <HH:MM>" } async def client_ready(self, client, db): self.client = client @loader.owner # только владелец юзербота async def autosend(self, m: loader.Message): """\"текст\" <кол-во> <интервал> <HH:MM> — создать задачу""" args = utils.get_args_raw(m) if not args or args.count('"') < 2: return await m.edit(self.strings("bad_syntax")) # --- Парсинг аргументов --- try: text = args.split('"')[1] rest = args.split('"')[2].strip().split() count = int(rest[0]) interval_raw = rest[1] start_time_raw = rest[2] except (IndexError, ValueError): return await m.edit(self.strings("bad_syntax")) # интервал: поддержка s / m / h mult = {"s": 1, "m": 60, "h": 3600} try: seconds = int(interval_raw[:-1]) * mult[interval_raw[-1].lower()] except Exception: return await m.edit("<b>[AutoSend]</b> Интервал должен оканчиваться на s/m/h") # время первой отправки try: hh, mm = map(int, start_time_raw.split(":")) now = datetime.utcnow() start_dt = now.replace(hour=hh, minute=mm, second=0, microsecond=0) if start_dt <= now: start_dt += timedelta(days=1) # если время уже прошло — завтра except Exception: return await m.edit("<b>[AutoSend]</b> Время укажите в формате HH:MM") await m.edit(self.strings("start").format(count, start_dt.strftime("%Y-%m-%d %H:%M"))) # --- Планирование --- for i in range(count): delay = (start_dt - datetime.utcnow()).total_seconds() await asyncio.sleep(max(delay, 0)) await self.client.send_message(m.chat_id, text) start_dt += timedelta(seconds=seconds) await m.respond(self.strings("done"))

Как установить

  1. Сохраните файл как autosend.py.
  2. Отправьте его себе в личку с ботом @HikkaUserbot, либо положите в папку modules.
  3. В чате управления выполните .load autosend.

Замечания и доработки

  • В модуле используется время UTC.
    Если нужен другой часовой пояс, замените datetime.utcnow() на datetime.now(pytz.timezone("Europe/Moscow")) (или ваш тайм-зон) и уберите .replace(...) корректно.
  • В Telethon ≥ 1.24 можно было бы расписать каждое сообщение через schedule_date, но живой sleep-цикл проще и надёжнее, особенно если интервал небольшой.
  • Если бот перегружается, задача пропадёт. Для постоянного «крон-стиля» расписания придётся сохранять задания в БД и регистрировать их снова при старте (это выходит за рамки примера).

このQ&Aを共有