538f1e3972
- Pyrogram core is now fully asynchronous - Ditched Python 3.5, welcome 3.6 as minimum version. - Moved all types to pyrogram.types - Turned the Filters class into a module (filters) - Moved all filters to pyrogram.filters - Moved all handlers to pyrogram.handlers - Moved all emoji to pyrogram.emoji - Renamed pyrogram.api to pyrogram.raw - Clock is now synced with server's time - Telegram schema updated to Layer 117 - Greatly improved the TL compiler (proper type-constructor hierarchy) - Added "do not edit" warning in generated files - Crypto parts are executed in a thread pool to avoid blocking the event loop - idle() is now a separate function (it doesn't deal with Client instances) - Async storage, async filters and async progress callback (optional, can be sync too) - Added getpass back, for hidden password inputs
33 lines
1.2 KiB
ReStructuredText
33 lines
1.2 KiB
ReStructuredText
welcomebot
|
|
==========
|
|
|
|
This is the Welcome Bot in @PyrogramChat.
|
|
|
|
It uses the Emoji module to easily add emojis in your text messages and Filters
|
|
to make it only work for specific messages in a specific chat.
|
|
|
|
.. code-block:: python
|
|
|
|
from pyrogram import Client, Emoji, Filters
|
|
|
|
TARGET = "PyrogramChat" # Target chat. Can also be a list of multiple chat ids/usernames
|
|
MENTION = "[{}](tg://user?id={})" # User mention markup
|
|
MESSAGE = "{} Welcome to [Pyrogram](https://docs.pyrogram.org/)'s group chat {}!" # Welcome message
|
|
|
|
app = Client("my_account")
|
|
|
|
|
|
# Filter in only new_chat_members updates generated in TARGET chat
|
|
@app.on_message(Filters.chat(TARGET) & Filters.new_chat_members)
|
|
def welcome(client, message):
|
|
# Build the new members list (with mentions) by using their first_name
|
|
new_members = [MENTION.format(i.first_name, i.id) for i in message.new_chat_members]
|
|
|
|
# Build the welcome message by using an emoji and the list we built above
|
|
text = MESSAGE.format(Emoji.SPARKLES, ", ".join(new_members))
|
|
|
|
# Send the welcome message, without the web page preview
|
|
message.reply(text, disable_web_page_preview=True)
|
|
|
|
|
|
app.run() # Automatically start() and idle() |