Для запуска нескольких ботов одновременно с помощью библиотеки aiogram, вы можете использовать модуль asyncio для асинхронного выполнения кода. Вот пример кода, который позволит запустить двух ботов одновременно:
```python
import asyncio
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor
# Токены ваших ботов
TOKENS = ['TOKEN1', 'TOKEN2']
# Функция для обработки сообщений
async def handle_message(message: types.Message):
await message.answer(f'Hello, {message.from_user.first_name}!')
# Функция для запуска бота
async def start_bot(token):
bot = Bot(token=token)
dp = Dispatcher(bot)
dp.register_message_handler(handle_message)
await bot.get_updates()
await executor.start_polling(dp, skip_updates=True)
# Запуск двух ботов
async def main():
tasks = [start_bot(token) for token in TOKENS]
await asyncio.gather(*tasks)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
```
Что касается работы с несколькими ботами Telegram и записью имени пользователя в базу данных, вам необходимо создать асинхронные запросы к вашей базе данных внутри функции `handle_message`. Вы можете использовать библиотеку aiorm для работы с базой данных asyncpg.
Пример простой функции для записи имени пользователя в базу данных PostgreSQL с использованием asyncpg:
```python
import asyncpg
# Функция для записи имени пользователя в базу данных
async def add_user_to_db(user_id, username):
conn = await asyncpg.connect(user='user', password='password', database='database', host='localhost')
await conn.execute('INSERT INTO users (user_id, username) VALUES ($1, $2)', user_id, username)
await conn.close()
# Функция для обработки сообщений с записью имени пользователя в базу данных
async def handle_message(message: types.Message):
await add_user_to_db(message.from_user.id, message.from_user.username)
await message.answer(f'Hello, {message.from_user.first_name}!')
```
Важно помнить, что при работе с несколькими ботами и базой данных через вебхуки, вам нужно будет настроить отдельные вебхуки для каждого бота и учесть возможные конфликты при одновременной работе с базой данных.