Добавить новое событие в Telethon - PullRequest
0 голосов
/ 20 июня 2020

я ищу событие create specificice в телемарафоне

@client.on(events.NewMessage(incoming=True))
async def my_event_handler(event):
    if event.is_private:
        print("ok")

в этом коде мне нужно иметь «is_private» в NewMessage, как я могу это сделать?

и как создавать события со спецификациями c Состояние? Например, я хочу, чтобы send_message в 12:00 каждый день, как я могу это сделать? * Обратите внимание, у меня есть событие, поэтому я не могу запустить его, например

client.send_message(chat_id, "message") # i want 2 this at 12:00 for example

1 Ответ

2 голосов
/ 20 июня 2020

Каждое событие - это EventBuilder, что означает, что все они поддерживают параметр func:

@client.on(events.NewMessage(incoming=True, func=lambda e: e.is_private))
async def my_event_handler(event):
    print('ok')

Вы также можете сделать для него отдельную функцию, если вы собираюсь использовать его много раз:

def private_incoming(event):
    return not event.out and event.is_private

@client.on(events.NewMessage(func=private_incoming))
async def my_event_handler(event):
    print('ok')

создавать события с указанием c Условие? Например, я хочу send_message в 12:00 каждый день

Это не событие. Событие - это то, что происходит при обновлении Telegram и отправке Telethon. Ваш код может делать все, что угодно, и вы можете использовать столько других библиотек, сколько захотите при программировании. Работа Telethon - не запускать что-то в определенную дату (это библиотека для общения с Telegram, и ничего более).

См. Использование asyncio для запуска функции в начале (00 секунд) каждого минута или найдите библиотеку для этого в https://pypi.org.

...