Skip to main content

Pyrogram 的 Monkeypatcher 插件

项目描述

焦莫德

Pyrogram 的 Monkeypatcher 插件

介绍

pyromod 是我为扩展我个人对 Pyrogram 的使用而开发的实用程序的汇编。然后我开始使用它和更多的机器人,现在我发布了它以使其更容易安装在新项目中。它与 pyrogram一起使用,这不是分叉版本,也不是修改版本。它会进行猴子修补以向 Pyrogram 类添加功能。

重要提示:您应该已经安装了 asyncio pyrogram。

用法

在您的脚本中至少导入pyromod一次,这样您就可以在同一进程的所有文件中使用修改后的热解图。例子:

# config.py
import pyromod.listen
from pyrogram import Client

app = Client('my_session')
# any other .py
from config import app
# no need to import pyromod again, pyrogram is already monkeypatched globally (at the same proccess)

我将包之间的补丁分开,以允许您只导入您想要的内容。每个__init__.py包在导入后都会自动执行monkeypatch(除了pyromod.helpers,它提供了应该显式导入的类和函数)。

pyromod.listen

只需导入它,它会自动执行monkeypatch,您将获得这些新方法:

  • await pyrogram.Client.listen(chat_id, filters=None, timeout=30) 等待指定聊天中的新消息并返回它您可以将更新过滤器传递给过滤器参数,就像您为更新处理程序所做的那样。例如filters=filters.photo & filters.bot

  • await pyrogram.Client.ask(text, chat_id, filters=None, timeout=30).listen()上述相同,但在等待之前发送消息您可以将自定义参数传递给其 send_message() 调用。检查下面的示例。

  • 绑定方法Chat.listen,User.listenChat.askUser.ask

例子:

from pyromod import listen # or import pyromod.listen
from pyrogram import Client
client = Client(...)
...
    answer = await client.ask(chat_id, '*Send me your name:*', parse_mode='Markdown')
    await client.send_message(chat_id, f'Your name is: {answer.text}')    

pyromod.filters

导入它,以下更新过滤器将被猴子修补到pyrogram.filters

  • filters.dice 骰子消息。

pyromod.nav

用于创建导航键盘的工具。

  • pyromod.nav.Pagination 创建一个完整的分页键盘。用法:
from pyrogram import Client, filters
from pyromod.nav import Pagination
from pyromod.helpers import ikb

def page_data(page):
    return f'view_page {page}'
def item_data(item, page):
    return f'view_item {item} {page}'
def item_title(item, page):
    return f'Item {item} of page {page}'

@Client.on_message(filters.regex('/nav'))
async def on_nav(c,m):
    objects = [*range(1,100)]
    page = Pagination(
        objects,
        page_data=page_data, # callback to define the callback_data for page buttons in the bottom
        item_data=item_data, # callback to define the callback_data for each item button
        item_title=item_title # callback to define the text for each item button
    )
    index = 0 # in which page is it now?
    lines = 5 # how many lines of the keyboard to include for the items
    columns = how many columns include in each items' line
    kb = page.create(index, lines, columns)
    await m.reply('Test', reply_markup=ikb(kb))

pyromod.helpers

用于创建内联键盘的工具要容易得多。

  • pyromod.helpers.ikb 创建内联键盘。它的第一个也是唯一的参数必须是一个包含按钮列表(行)的列表(键盘)。按钮也可以是列表或元组。我使用元组不必处理很多括号。按钮语法必须是:(TEXT, CALLBACK_DATA) 或 (TEXT, VALUE, TYPE),其中 TYPE 可以是“url”或任何其他支持的按钮类型,VALUE 是它的值。此语法将转换为 {"text": TEXT, TYPE: VALUE)。如果 TYPE 是 CALLBACK_DATA,你可以省略它,就像上面的第一个语法一样。例子:
from pyromod.helpers import ikb
...
keyboard = ikb([
    [('Button 1', 'call_1'), ('Button 2', 'call_2')],
    [('Another button', 't.me/pyromod', 'url')]
])
await message.reply('Test', reply_markup=keyboard)
  • pyromod.helpers.array_chunk 将列表的元素分成小列表。即 [1, 2, 3, 4] 可以变成 [[1,2], [3,4]]。如果您想以动态方式构建超过 1 列的键盘,这将非常有用。您只需将所有按钮放在一个列表中并运行:
lines = array_chunk(buttons, 2) # generate a list of lines with 2 buttons on each
keyboard = ikb(lines)

版权和许可

该项目可能包含 Pyrogram 代码片段

根据GNU Lesser General Public License v3 或更高版本 (LGPLv3+)的条款获得许可

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pyrohappy-1.6.tar.gz (21.8 kB 查看哈希)

已上传 source

内置分布

pyrohappy-1.6-py3-none-any.whl (28.6 kB 查看哈希)

已上传 py3