Задать вопрос
@persilik

Не работает код aiogram3?

Недавно начал изучение aiogram3
Нужно принять данные которые присылает телега на яндекс клауд функцию через вебхук.
Точка входа в яндекс функции index.handler
Смог найти только несколько строк кода, но даже они не работают. Буду очень благодарен если поможете.

index.py
import json
from aiogram import types
from main import dp

async def handler(event, _):
    body = json.loads(event['body'])

    bot.set_current(dp.bot)
    update = types.update.Update(что то передаём)
    await dp.feed_update(update)

    return {
        'statusCode': 200,
        'body': '!'
    }

main.py
from aiogram import Bot, Dispatcher, types
from aiogram.types import Message

bot = Bot(token='', parse_mode="HTML")
dp = Dispatcher()

@dp.message()
async def handle_text(message: Message) -> None:
    await message.answer(message.text)
  • Вопрос задан
  • 588 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
@persilik Автор вопроса
Решил проблему, оказывается все довольно просто. Упустил некоторые моменты из документации.
import json
from aiogram import types
from aiogram import Bot, Dispatcher, types
from aiogram.types import Message

bot = Bot(token='', parse_mode="HTML")
dp = Dispatcher()

@dp.message()
async def test(message: Message) -> None:
    await message.answer(message.text)

async def handler(event, context):
    up = json.loads(event['body'])

    my_update = types.update.Update(update_id=up['update_id'], message=up['message'])
    await dp.feed_update(bot=bot, update=my_update)      
    
    return {
        'statusCode': 200,
        'body': '!'
    }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@GofMan33333
Чтобы принять данные, которые присылает Телеграм на яндекс клауд функцию через вебхук, вам нужно сделать следующее:

Убедитесь, что у вас уже настроен вебхук для бота в Телеграме. Для этого вызовите метод setWebhook у бота с URL, который указывает на яндекс клауд функцию.

В функции index.handler вам нужно извлечь данные из запроса (event), который приходит в яндекс клауд функцию. В частности, вам нужно извлечь тело запроса (event['body']) и декодировать его из JSON формата. Получившийся объект может быть преобразован в тип Update с помощью конструктора aiogram.types.Update.

После того, как вы создадите экземпляр Update, вы можете обработать его с помощью Dispatcher. Для этого вызовите метод feed_update у объекта Dispatcher (dp).

Наконец, не забудьте вернуть HTTP ответ
Ответ написан
Lord_of_Rings
@Lord_of_Rings
Дунадан - северный странник. Злой, но очень добрый
Не работает код aiogram3?

Не работает
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы