Нужно запустить бота через локальный сервер, чтобы обойти ограничение бота на принятие файла в размере от 50 мб.
При запуске кода через локальный сервер происходит ошибка:
aiogram.utils.exceptions.Unauthorized: Unauthorized: invalid token specified
Вот код создающий оболочку бота:
from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.bot.api import TelegramAPIServer
import logging
from settings.file_settings import API_KEY_TG
logging.basicConfig(level=logging.INFO)
local_server = TelegramAPIServer.from_base('http://localhost:8080/bot')
bot = Bot(token=API_KEY_TG, server = local_server)
dp = Dispatcher(bot, storage=MemoryStorage())
Вот, непосредственно, сам файл старта бота:
from aiogram import executor
from create_bot import dp
from handlers import start_connect
async def on_startup(_):
print("Bot Online!")
start_connect.register_handlers_start_connect(dp)
def main():
executor.start_polling(dp, skip_updates=True, on_startup=on_startup)
if __name__ == '__main__':
main()
Сервер запущен (Запускаю следующей команде в папке с exe файлом):
path\telegram-bot-api.exe --api-id=****--api-hash=**** --http-port=8080 --http-stat-port=8090 --dir=C:\TMP\data --temp-dir=C:\TMP\tmp
Однако, при смене сервера на
localhost:8080 (имею ввиду без приставки "/bot"), то бот запускается, НО(!), не через локальный сервер.
Как я это понял?
Во-первых, выбивается ошибка при отправке файла свыше 50мб, а именно:
aiogram.utils.exceptions.FileIsTooBig: File is too big
Во-вторых, при попытке
пропинговать бота в cmd командой
curl http://localhost:8080
приходит такой ответ:
{"ok":false,"error_code":404,"description":"Not Found"}
Однако при пробивке по такому коду, приходит следующее
C:\Windows\system32>curl http://localhost:8080/bot/getMe
{"ok":false,"error_code":401,"description":"Unauthorized: invalid token specified"}