Size: a a a

2020 December 27

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Сергей Сафарянц
Здравствуйте, помогите разобраться с работой webhook.

Установил nginx + letsencrypt
Добавил в файл nginx.config:
server {
               listen 80;
               listen 443 ssl;
               server_name vm.example;

               ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
               ssl_certificate /etc/letsencrypt/live/vm.example/fullchain.pem;
               ssl_certificate_key /etc/letsencrypt/live/vm.example/privkey.pem;
               location / {
                       proxy_pass http://127.0.0.1:7771;
                       proxy_redirect     off;
                       proxy_set_header   Host $host;
                       proxy_set_header   X-Real-IP $remote_addr;
                       proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                       proxy_set_header   X-Forwarded-Host $server_name;
               }
       }
Пытаюсь запустить python-скрипт:
import aiogram

BOT_TOKEN = "Тут был токен"
# webhook settings
WEBHOOK_HOST = 'https://vm.example'
WEBHOOK_PATH = '/'
WEBHOOK_URL = f"{WEBHOOK_HOST}{WEBHOOK_PATH}"

# webserver settings
WEBAPP_HOST = '127.0.0.1'  
WEBAPP_PORT = 7771

bot = aiogram.Bot(token=BOT_TOKEN)
dp = aiogram.Dispatcher(bot=bot)


@dp.message_handler(commands=['start'])
async def start(message: aiogram.types.Message):
   await message.answer(text="Hello!")


async def on_startup(dp):
   await bot.set_webhook(WEBHOOK_URL)


async def on_shutdown(dp):
   await bot.delete_webhook()


if name == 'main':
   aiogram.executor.start_webhook(
       dispatcher=dp,
       webhook_path=WEBHOOK_PATH,
       on_startup=on_startup,
       on_shutdown=on_shutdown,
       skip_updates=True,
       host=WEBAPP_HOST,
       port=WEBAPP_PORT,
   )
Скрипт запускается, но бот не видит сообщения
Blyat uberi text suka
источник

A

A No Name in aiogram [ru]
Fᴏʀᴅᴇɴ
Blyat uberi text suka
Ахахвхаха
источник

СС

Сергей Сафарянц... in aiogram [ru]
Arwichok 🐍
getwebhookinfo, глянь что пишет
{"url": "", "has_custom_certificate": false, "pending_update_count": 1}
А почему url пустой может быть?
источник

A

Arwichok 🐍 in aiogram [ru]
Сергей Сафарянц
{"url": "", "has_custom_certificate": false, "pending_update_count": 1}
А почему url пустой может быть?
Проблема с установкой джойк..  вебхука?
источник

A

Arwichok 🐍 in aiogram [ru]
Смотри что возвращают методы
источник

A

Arwichok 🐍 in aiogram [ru]
Вебхук такая штука, нужно немножко поебатся
источник

СС

Сергей Сафарянц... in aiogram [ru]
Arwichok 🐍
Вебхук такая штука, нужно немножко поебатся
Да знаю)) Я тут ещё мок-тесты прикрутить пытаюсь))
источник

$

$name$ in aiogram [ru]
Arwichok 🐍
Проблема с установкой джойк..  вебхука?
😂
источник

A

Arwichok 🐍 in aiogram [ru]
Сергей Сафарянц
Да знаю)) Я тут ещё мок-тесты прикрутить пытаюсь))
Оо
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Сергей Сафарянц
Да знаю)) Я тут ещё мок-тесты прикрутить пытаюсь))
Не стоит
источник

СС

Сергей Сафарянц... in aiogram [ru]
Fᴏʀᴅᴇɴ
Не стоит
Интересно почему?
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Сергей Сафарянц
Интересно почему?
Проще ручками протестировать
источник

СС

Сергей Сафарянц... in aiogram [ru]
Fᴏʀᴅᴇɴ
Проще ручками протестировать
Ручки устанут, если сценарии будут огромные)
источник

A

Arwichok 🐍 in aiogram [ru]
Fᴏʀᴅᴇɴ
Проще ручками протестировать
А есть нормальный способ тестить ботов?
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Arwichok 🐍
А есть нормальный способ тестить ботов?
По хорошему - надо мокать тг апи
Но оно тебе не надо, поверь мне
источник

СС

Сергей Сафарянц... in aiogram [ru]
Arwichok 🐍
А есть нормальный способ тестить ботов?
В идеале моки, на гите есть класс FakeTelegram, но оно не работает)
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Самый лучший сценарий - отдельный сервер, который работает с локальными данными и соблюдает ту же логику что и ботапи официальный
источник

СС

Сергей Сафарянц... in aiogram [ru]
Fᴏʀᴅᴇɴ
Самый лучший сценарий - отдельный сервер, который работает с локальными данными и соблюдает ту же логику что и ботапи официальный
Мне кажется это избыточно. Самый оптимальный вариант это реализация класса мок-сервера(тот же FakeTelegram) который будет просто экранировать запросы
источник

F

Fᴏʀᴅᴇɴ in aiogram [ru]
Сергей Сафарянц
Мне кажется это избыточно. Самый оптимальный вариант это реализация класса мок-сервера(тот же FakeTelegram) который будет просто экранировать запросы
А потом сидеть и адаптировать его под нескольких ботов
источник

СС

Сергей Сафарянц... in aiogram [ru]
Fᴏʀᴅᴇɴ
А потом сидеть и адаптировать его под нескольких ботов
Ну у каждого бота своя бизнес-логика))
источник