Как захостить телеграмм бота aiogram?
Добрый день, пытаюсь запустить код, отлично работающий в Pycharm, но не работающий на сервере. Сервер ругается именно на эту часть.
@dp.callback_query(ClientState.QUESTION_1, F.data == 'try again') @dp.callback_query(F.data == 'want to see') async def question_1(callback: CallbackQuery, state: FSMContext): album = MediaGroupBuilder() photo_1 = FSInputFile(path='content/images/q_1_right.jpg') photo_2 = FSInputFile(path='content/images/q_1_1.jpg') photo_3 = FSInputFile(path='content/images/q_1_2.jpg') album.add_photo(media=photo_1) album.add_photo(media=photo_2) album.add_photo(media=photo_3, caption=question_1_text) await bot.send_media_group(media=album.build(), chat_id=callback.message.chat.id) |
@dp.callback_query(ClientState.QUESTION_1, F.data == 'try again') @dp.callback_query(F.data == 'want to see') async def question_1(callback: CallbackQuery, state: FSMContext): album = MediaGroupBuilder() photo_1 = FSInputFile(path='content/images/q_1_right.jpg') photo_2 = FSInputFile(path='content/images/q_1_1.jpg') photo_3 = FSInputFile(path='content/images/q_1_2.jpg') album.add_photo(media=photo_1) album.add_photo(media=photo_2) album.add_photo(media=photo_3, caption=question_1_text) await bot.send_media_group(media=album.build(), chat_id=callback.message.chat.id)
aiogram.exceptions.TelegramNetworkError: HTTP Client says - ClientOSError: [Errno 2] Can not write request body for https://api.telegram.org/bot7055015851:AAGwKqPmSsm...
Насколько я понял он ругается на отсутствие media в send_media_group? Путь к фотографиям указан правильный.
Дополнительно:
Ответы:
Права на папку дайте.. нет прав для записи файлов
Can not write request body
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для хостинга телеграмм бота, созданного с использованием библиотеки aiogram, необходимо выполнить следующие шаги:
1. Регистрация бота в Telegram и получение токена. Для этого нужно обратиться к @BotFather в Telegram и создать нового бота, следуя инструкциям. Полученный токен необходимо сохранить.
2. Создание сервера для хостинга. Можно использовать облачный хостинг (например, Heroku, AWS, Google Cloud) или собственный сервер.
3. Установка необходимых зависимостей. В файле requirements.txt указываются все зависимости, необходимые для работы бота. Для aiogram это будет примерно следующее:
aiogram
4. Создание основного файла бота. В нем необходимо импортировать библиотеку aiogram и создать экземпляр класса Bot с указанием токена:
from aiogram import Bot, Dispatcher, types from aiogram.contrib.middlewares.logging import LoggingMiddleware from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters.state import State, StatesGroup from aiogram.dispatcher.filters import Command from aiogram.types import ParseMode, CallbackQuery from aiogram.utils import executor from aiogram.utils.callback_data import CallbackData bot = Bot(token="YOUR_BOT_TOKEN")
5. Настройка обработчиков команд и сообщений бота. В файле с основным кодом бота нужно создать обработчики для различных событий, например:
@dp.message_handler(commands=['start']) async def start_command(message: types.Message): await message.answer("Hello! I am your bot.") @dp.message_handler() async def echo_message(message: types.Message): await message.answer(message.text)
6. Запуск бота. Для запуска бота достаточно вызвать функцию start_polling() у объекта Dispatcher:
if __name__ == '__main__': executor.start_polling(dp)
7. Деплой бота на сервер. Загружаем все файлы на сервер, устанавливаем зависимости из requirements.txt и запускаем бота.
Теперь ваш телеграмм бот, созданный с использованием aiogram, должен успешно работать на хостинге.