Пример кода бота с применением Asana API:
import os
import json
from flask import Flask, request
from asana import Client
from pyrogram import Client as TelegramClient
app = Flask(__name__)
telegram_client = TelegramClient("my_telegram_bot")
asana_client = Client.access_token("my_asana_access_token")
# function to handle incoming webhooks from Asana
@app.route("/webhook", methods=["POST"])
def handle_webhook():
data = json.loads(request.data)
task_name = data["data"]["name"]
task_url = data["data"]["html_url"]
# send message to Telegram channel with task name and url
telegram_client.send_message("my_channel_username", f"New task added: {task_name}\n{task_url}")
return "OK"
# function to handle commands from Telegram
@telegram_client.on_message(command="addtask")
def handle_add_task(client, message):
task_name = message.text.split(" ", 1)[1]
new_task = asana_client.tasks.create({"workspace": "my_workspace_id", "name": task_name})
message.reply(f"Task added with id: {new_task['id']}")
if __name__ == "__main__":
# start the Telegram bot
telegram_client.run()
# start the Flask app to handle webhooks
app.run(port=int(os.environ.get("PORT", 5000)))
Это телеграм-бот для добавления задач. Что я тут сделал:
Импортировал os, json, Flask, asana, pyrogram.
Создал экземпляры классов Flask и TelegramClient, а также объект Asana, используя токен доступа.
Создал функцию handle_webhook() для обработки входящих webhooks из Asana. Эта функция использует метод POST и обрабатывает данные из webhook, извлекая имя задачи и URL. Затем она отправляет сообщение в Telegram канал с именем задачи и URL.
Заключительный шаг - добавил функцию handle_add_task() для обработки команд из Telegram. Эта функция вызывается, когда пользователь отправляет команду "/addtask" и имя задачи. Функция использует Asana API для создания новой задачи и отправляет ответ пользователю с ID новой задачи.