DEV Community

William Rodriguez
William Rodriguez

Posted on

Type-safe chat events: The WMessage domain abstraction.

Stop traversing brittle nested dictionaries to extract message sender IDs and text. wconnect encapsulates the chaos of the Telegram Bot API into a clean, predictable WMessage domain model.

Here is how you implement WMessage Domain Model in production with wconnect:

from wconnect import WMessage, Wtelegram

bot = Wtelegram()

@bot.on_message(value_type="text")
def process_message(msg: WMessage) -> None:
    # Clean, typed access to all event metadata
    print(f"Author: {msg.username} (ID: {msg.user_id})")
    print(f"Chat Context: {msg.chat_id} | Message ID: {msg.message_id}")
    print(f"Payload: {msg.text} | Type: {msg.value_type}")

bot.run_consumers(block=True)
Enter fullscreen mode Exit fullscreen mode

Why This Matters:

  • Zero boilerplate decorators (@bot.on_command, @bot.on_message, @bot.consumer).
  • Stream binary files directly from RAM using WFile.
  • Non-blocking daemon poller with run_consumers(block=False).

Check out the repo on GitHub!

Top comments (0)