Skip to content

lAlbertvh/mybot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

mybot

#start to ern #i just copy import asyncio import contextlib import logging from typing import NoReturn

from telegram import Bot, Update from telegram.error import Forbidden, NetworkError

logging.basicConfig( format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO )

set higher logging level for httpx to avoid all GET and POST requests being logged

logging.getLogger("httpx").setLevel(logging.WARNING)

logger = logging.getLogger(name)

async def main() -> NoReturn: """Run the bot.""" # Here we use the async with syntax to properly initialize and shutdown resources. async with Bot("token") as bot: # get the first pending update_id, this is so we can skip over it in case # we get a "Forbidden" exception. try: update_id = (await bot.get_updates())[0].update_id except IndexError: update_id = None

    logger.info("listening for new messages...")
    while True:
        try:
            update_id = await echo(bot, update_id)
        except NetworkError:
            await asyncio.sleep(1)
        except Forbidden:
            # The user has removed or blocked the bot.
            update_id += 1

async def echo(bot: Bot, update_id: int) -> int: """Echo the message the user sent.""" # Request updates after the last update_id updates = await bot.get_updates(offset=update_id, timeout=10, allowed_updates=Update.ALL_TYPES) for update in updates: next_update_id = update.update_id + 1

    # your bot can receive updates without messages
    # and not all messages contain text
    if update.message and update.message.text:
        # Reply to the message
        logger.info("Found message %s!", update.message.text)
        await update.message.reply_text(update.message.text)
    return next_update_id
return update_id

if name == "main": with contextlib.suppress(KeyboardInterrupt): # Ignore exception when Ctrl-C is pressed asyncio.run(main())

About

start to ern

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published