# Overview

**aiogram** now is fully support of [Telegram Bot API v{!_api_version.md!}](https://core.telegram.org/bots/api)

All API methods and types is fully autogenerated from Telegram Bot API docs by parser with code-generator.

Package: `aiogram.api`
 
## Methods

All API methods is wrapped as [pydantic](https://pydantic-docs.helpmanual.io/) models and placed in `aiogram.api.methods` package so that's mean all values which you pass as arguments to the methods will be validated. 
Here is all methods is classes and in due to Python standards all classes named in upper camel case, for example methods `sendMessage` has the name `SendMessage`

Full list of methods can be found in section "[Methods](methods/index.md)"

## Types

All types is also wrapped with [pydantic](https://pydantic-docs.helpmanual.io/) and placed in `aiogram.api.types` package.
In this place makes some more differences with official documentations:

- name `from` was renamed to `from_user` in due to `from` is an [keyword in python](https://docs.python.org/3/reference/lexical_analysis.html#keywords)
- timestamps has `datetime.datetime` type instead of `int`
- InputFile is used for sending files and is not use `pydantic.BaseModel` as base class

Full list of methods can be found in section "[Types](types/index.md)"

## Bot instance

Bot instance can be created from `aiogram.Bot` (`#!python3 from aiogram import Bot`) and you can't use API methods without instance of bot with configured token.

Constructor specification:

| Argument | Type | Description |
| --- | --- | --- |
| `token` | `#!python3 str` | Telegram Bot token (Obtained from [@BotFather](https://t.me/BotFather)). | 
| `session` | `#!python3 Optional[BaseSession]` | HTTP Client session (For example AiohttpSession). If not specified it will be automatically created. | 
| `parse_mode` | `#!python3 Optional[str]` | Default parse mode. If specified it will be propagated into the API methods at runtime. |

This class has aliases for all API methods and named in `lower_camel_case`. For example `sendMessage` named `send_message` and has the same specification with all class-based methods.

Here you can pass default parse mode (argument `parse_mode`) and this value will be used in all API methods automatically.


## Usage
```python3
import asyncio
from os import getenv

from aiogram import Bot


async def main():
    async with Bot(token=getenv("TELEGRAM_TOKEN"), parse_mode="HTML").context() as bot:
        await bot.send_message(61043901, "<b>Hello, World!</b>")


if __name__ == "__main__":
    asyncio.run(main())
```
