irispy

Async and fast api wrapper for IrisCallback API


Keywords
iris-callback-api, python3
License
GPL-3.0
Install
pip install irispy==1.2

Documentation

IrisPY

Асинхронная ΠΈ быстрая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Iris Callback API.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Iris Callback API Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ сигналы ΠΈΠ· бСсСд, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ подписались. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ΄ΠΎΠ±Π΅Π½ для вас Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.

Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ запросы ΠΎΡ‚ сСрвСров Iris.

Установка

  1. НовСйшая вСрсия:
    pip install irispy==1.2

  2. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ установщика pip ΠΈΠ· GitHub:
    pip install https://github.com/zpodushkin/irispy/archive/master.zip --upgrade

ΠšΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡ

downloads downloads

ПослС установки irispy рСкомСндуСтся сразу ΠΆΠ΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ loguru ΠΈ vbml.
Π‘ Π½ΠΈΠΌΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈ быстрСС.

УстановитС loguru ΠΈ vbml с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄:

pip install loguru
pip install vbml

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

from irispy import Dispatcher
from irispy import objects
from random import randint

import typing

dp = Dispatcher(
    secret="<your_secret>",
    user_id="<your_user_id>",
    token="<your_vk_token>"  # ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ здСсь: https://vkhost.github.io/ (Kate Mobile)
)
chats = {}  # Бинхронизация Ρ‡Π°Ρ‚ΠΎΠ² с Π˜Ρ€ΠΈΡΠΎΠΌ


async def send_msg(peer_id: int, message: str, attachment: str = "", **kwargs):
    """ ΠœΠ΅Ρ‚ΠΎΠ΄ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния.
    :param peer_id: Айди бСсСды: ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 2000000666
    :param message: ВСкст сообщСния
    :param attachment: Π’Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠŸΡ€ΠΈΠΌΠ΅Ρ€: photo1_4545
    :return:
    """
    await dp.api.messages.send(
        peer_id=peer_id,
        message=message,
        attachment=attachment,
        random_id=randint(-2e9, 2e9),
        **kwargs
    )


async def get_chat(date: int) -> typing.Union[None, int]:
    """ ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π°ΠΉΠ΄ΠΈ Ρ‡Π°Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π·
    ΠΌΠ΅Ρ‚ΠΎΠ΄ "messages.search" с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:
    :param date: Π”Π°Ρ‚Π° Π² timestamp
    :return: Айди Ρ‡Π°Ρ‚Π°: ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 2000000001
    """
    try:
        items = (await dp.api.messages.search(
            q="!ΡΠ²ΡΠ·Π°Ρ‚ΡŒ",
            count=5
        ))["items"]  # ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ список Ρ‡Π°Ρ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ сообщСниС "!ΡΠ²ΡΠ·Π°Ρ‚ΡŒ"
        for i in items:  # ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Π½ΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ
            if i["date"] == date:  # Если Π΄Π°Ρ‚Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния Ρ€Π°Π²Π½Π° нашСй Π΄Π°Ρ‚Π΅
                return i["peer_id"]  # Π’ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π°ΠΉΠ΄ΠΈ Ρ‡Π°Ρ‚Π°
    except Exception as e:
        print("Error: ", e)
        return


@dp.event.sendMySignal(text=["ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈ <text>"], lower=True)
async def wrapper(event: objects.SendMySignal, text: str):
    """ Ѐункция, которая Π»ΠΎΠ²ΠΈΡ‚ сигнал
    ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ сообщСний: .с; !сигнал ...
    :param text:
    :param event: ΠžΠ±ΡŠΠ΅ΠΊΡ‚ эвСнта
    :return:
    """
    await send_msg(
        peer_id=chats[event.object.chat],
        message=f"ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽ: {text}"
    )


@dp.event.sendSignal(text="ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈ <text>", lower=True)
async def executor(event: objects.SendSignal, text: str):
    print(event, text)


@dp.event.bindChat()
async def bind(event: objects.BindChat):
    if event.object.chat not in chats:  # Если UID Ρ‡Π°Ρ‚Π° Π½Π΅Ρ‚ Π² словарС, Ρ‚ΠΎ добавляСм.
        chats[event.object.chat] = await get_chat(event.message.date)
        await send_msg(peer_id=chats[event.object.chat], message="Π§Π°Ρ‚ привязан!")

dp.run_app(host="0.0.0.0", port=80)

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅ /examples

ДокумСнтация

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Ρ€Π΅Π»ΠΈΠ·ΠΎΠ²

  • 1.0
    • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ!
  • 1.0.1
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок
  • 1.0.5
    • Валидация Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… sendSignal ΠΈ sendMySignal
    • ИзмСнСниС структуры Ρ…Π΅Π½Π΄Π»Π΅Ρ€ΠΎΠ²
  • 1.1
    • Π’Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€Ρ‹ VBML!
    • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ·!
  • 1.1.1
    • НС Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€Ρ‹ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ
    • ΠœΠΎΠ΄ΡƒΠ»ΡŒ Β«IrisPYΒ» Π±Ρ‹Π» Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π½Π° PyPi!
  • 1.2
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° VK API
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ User LP

Contributing

ПР ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ! МнС приятно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ваш Π²ΠΊΠ»Π°Π΄ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
Π—Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ вопросы Π² Π±Π»ΠΎΠΊΠ΅ issues ΠΈ Π² Ρ‡Π°Ρ‚Π΅ VK!

ЛицСнзия

Copyright Β© 2019-2020 zpodushkin.
Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ GPL-3.0 Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ.