Появился вопрос по PythonAnywhere, насчет запуска телеграмм бота. Что делать?
Попробовал поставить бота на хостинг, но начала появляться ошибка, которая говорит на один файл, прошу помочь. Сам код:
import asyncio import logging from aiogram import Bot, Dispatcher from config import TOKEN from app.handlers import router bot = Bot(token=TOKEN) dp = Dispatcher() async def main(): dp.include_router(router) await dp.start_polling(bot) if __name__ == '__main__': logging.basicConfig(level=logging.INFO) try: asyncio.run(main) except KeyboardInterrupt: print('Exit! Exit!nExit! Exit!nExit! Exit!nExit! Exit!') |
import asyncio import logging from aiogram import Bot, Dispatcher from config import TOKEN from app.handlers import router bot = Bot(token=TOKEN) dp = Dispatcher() async def main(): dp.include_router(router) await dp.start_polling(bot) if __name__ == '__main__': logging.basicConfig(level=logging.INFO) try: asyncio.run(main) except KeyboardInterrupt: print('Exit! Exit!nExit! Exit!nExit! Exit!nExit! Exit!')
Текст ошибки :
Traceback (most recent call last):
File "/home/YnauYT/bot/run.py", line 19, in
asyncio.run(main)
File "/usr/local/lib/python3.10/asyncio/runners.py", line 37, in run
raise ValueError("a coroutine was expected, got {!r}".format(main))
ValueError: a coroutine was expected, got
Заранее спасибо всем!
Дополнительно:
asyncio.run(main())
- Исправил, но после выдаёт другую ошибку :
Traceback (most recent call last):
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 992, in _wrap_create_connection
return await self._loop.create_connection(*args, **kwargs)
File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1064, in create_connection
raise exceptions[0]
File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1049, in create_connection
sock = await self._connect_sock(
File "/usr/local/lib/python3.10/asyncio/base_events.py", line 960, in _connect_sock
await self.sock_connect(sock, address)
File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 500, in sock_connect
return await fut
File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 505, in _sock_connect
sock.connect(address)
OSError: [Errno 101] Network is unreachable
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiogram/client/session/aiohttp.py", line 170, in make_request
async with session.post(
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiohttp/client.py", line 1194, in __aenter__
self._resp = await self._coro
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiohttp/client.py", line 578, in _request
conn = await self._connector.connect(
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 544, in connect
proto = await self._create_connection(req, traces, timeout)
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 911, in _create_connection
_, proto = await self._create_direct_connection(req, traces, timeout)
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 1235, in _create_direct_connection
raise last_exc
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 1204, in _create_direct_connection
transp, proto = await self._wrap_create_connection(
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 1000, in _wrap_create_connection
raise client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default [Network is unreachable]
During handling of the above exception, another exception occurred:Traceback (most recent call last):
File "/home/YnauYT/bot/run.py", line 19, in
asyncio.run(main())
File "/usr/local/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/local/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
return future.result()
File "/home/YnauYT/bot/run.py", line 14, in main
await dp.start_polling(bot)
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py", line 551, in start_polling
await asyncio.gather(*done)
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py", line 340, in _polling
user: User = await bot.me()
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiogram/client/bot.py", line 364, in me
self._me = await self.get_me()
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiogram/client/bot.py", line 1823, in get_me
return await self(call, request_timeout=request_timeout)
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiogram/client/bot.py", line 492, in __call__
return await self.session(self, method, timeout=request_timeout)
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiogram/client/session/base.py", line 254, in __call__
return cast(TelegramType, await middleware(bot, method))
File "/home/YnauYT/.local/lib/python3.10/site-packages/aiogram/client/session/aiohttp.py", line 177, in make_request
raise TelegramNetworkError(method=method, message=f"{type(e).__name__}: {e}")
aiogram.exceptions.TelegramNetworkError: HTTP Client says - ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default [Net
work is unreachable] - YnauYT, ну вроде всё понятно в сообщении ошибки. Спрашивай PythonAnywhere
- Everything_is_bad, хорошо спасибо за ответ, но вопрос на этом сайте пересоздам
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для запуска телеграмм бота на PythonAnywhere, вам следует выполнить следующие шаги:
1. Зарегистрируйтесь на PythonAnywhere и создайте новый аккаунт, если у вас его еще нет.
2. Создайте новое виртуальное окружение на PythonAnywhere, в котором будет работать ваш телеграмм бот.
3. Установите необходимые пакеты для работы с телеграмм ботом. Для этого можно воспользоваться pip:
pip install python-telegram-botpip install python-telegram-bot
4. Создайте нового бота у BotFather в Telegram и получите токен для доступа к API бота.
5. Напишите код для вашего телеграмм бота. Например, вот простой пример бота на Python:
from telegram.ext import Updater, CommandHandler def start(update, context): update.message.reply_text('Hello! I am your bot.') updater = Updater('YOUR_BOT_TOKEN', use_context=True) dispatcher = updater.dispatcher dispatcher.add_handler(CommandHandler('start', start)) updater.start_polling()
6. Сохраните ваш код в файле с расширением .py, например bot.py.
7. Загрузите ваш код на PythonAnywhere.
8. Откройте консоль на PythonAnywhere и запустите ваш бот, выполнив команду:
python bot.py
Теперь ваш телеграмм бот должен успешно запуститься на PythonAnywhere и начать отвечать на команды пользователей. Не забудьте проверить работоспособность бота, отправив ему сообщение в Telegram. Если у вас возникли какие-либо проблемы или вопросы, не стесняйтесь задавать их на форуме PythonAnywhere или в сообществе разработчиков Telegram.