как сделать кнопку ссылку

import logging
from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiogram.dispatcher import Dispatcher
from aiogram.dispatcher.webhook import SendMessage
from aiogram.utils.executor import start_webhook
import aiogram.utils.markdown as fmt
from aiogram.contrib.fsm_storage.memory import MemoryStorage

from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup

# Django
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
application = get_wsgi_application()

from bot.models import Settings, Qiwi, User, Purchase, Reviews, PaymentRequest, PaymentRequestAdmin, Mailing, Comment, Reply, Message

import random

from db import *

from pytils import numeral
from datetime import datetime, timedelta, time

import requests
import json

import re
from aiogram.types.web_app_info import WebAppInfo
from aiogram.types import ReplyKeyboardRemove, \
    ReplyKeyboardMarkup, KeyboardButton, \
    InlineKeyboardMarkup, InlineKeyboardButton

from aiogram.utils.callback_data import CallbackData
cb = CallbackData("bot", "id", "action")

logging.basicConfig(level=logging.INFO)

tgbot = Settings.objects.get(id = '1')

print(tgbot.tg_token)

message = KeyboardButton('Написать')
buy = KeyboardButton('Купить')
last = KeyboardButton('Купил')
views = KeyboardButton('Отзвыв')
lk = KeyboardButton('Баланс')
support = KeyboardButton('✅Наши контакты')
send_message = KeyboardButton('ПРОФИЛЬ')

btnProfile = KeyboardButton('ПРОФИЛЬ')
profileKeyboard = ReplyKeyboardMarkup(resize_keyboard = True).add(btnProfile)


greet_kb = ReplyKeyboardMarkup(resize_keyboard=True)
greet_kb.add(lk, message)
greet_kb.add(buy, last, views)
greet_kb.add(send_message, support)




NOTSUB_MESSAGE = "Чтобы бот  работал\n\n ??Подпишись??\n ??на наши   ??\n ??каналы   ??\n "

CHANNELS = [
    ["? подписаться! ?", "-10017", ""],
    ["? подписаться! ?", "-100176", ""],
    ["? подписаться! ?", "-100176770", ""],
]

def get_bot():
    bot = Bot(parse_mode='HTML',token=tgbot.tg_token)
    return bot
bot = Bot(parse_mode='HTML',token=tgbot.tg_token)
dp = Dispatcher(bot, storage=MemoryStorage())
dp.middleware.setup(LoggingMiddleware())



def showChannels():
    keyboard = InlineKeyboardMarkup(row_width=1)

    for channel in CHANNELS:
        btn = InlineKeyboardButton(text=channel[0], url=channel[2])
        keyboard.insert(btn)

    btnDoneSubb = InlineKeyboardButton(text="Чат", callback_data="Канал")
    btnDoneSub = InlineKeyboardButton(text="Я ПОДПИСАЛСЯ НА КАНАЛ!", callback_data="subchanneldone")
    keyboard.insert(btnDoneSub)
    return keyboard

async def check_sub_channels(_channels, user_id):
    for channel in _channels:
        chat_member = await bot.get_chat_member(chat_id=channel[1], user_id=user_id)
        print(chat_member['status'])
        if chat_member['status'] == 'left':
            return False
    return True
async def anti_flood(*args, **kwargs):
    m = args[0]
    #тут будет то, что нужно при флуде.
    await m.answer("Не флуди :)")


@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    bot = get_bot()
    if message.chat.type == 'private':
        if await check_sub_channels(CHANNELS, message.from_user.id):

            bot = Settings.objects.get(id = '1')
            user, created = User.objects.get_or_create(tg_user_id=message.from_user.id)

            if created:
                user.tg_user_first_name=message.from_user.first_name
                user.tg_user_last_name=message.from_user.last_name
                user.tg_user_username=message.from_user.username
                user.tg_user_language_code=message.from_user.language_code
                user.save()
            else:
                pass
            
            if bot.logo:
                await message.answer_photo(bot.logo, bot.welcome, reply_markup=greet_kb, parse_mode='HTML')
            else:
                await message.answer(bot.welcome, reply_markup=greet_kb, parse_mode='HTML')

            # if photo:
            #     photo=open(f'uploads/logo.jpg', 'rb')
            #     await message.answer_photo(photo, bot.welcome, reply_markup=greet_kb, parse_mode='HTML')

        else:
            #await bot.send_message(message.from_user.id, NOTSUB_MESSAGE from_user.id, reply_markup=showChannels())

            await bot.send_message(message.from_user.id, NOTSUB_MESSAGE, disable_web_page_preview=True, reply_markup=showChannels())
            

@dp.callback_query_handler(text="subchanneldone")
async def subchanneldone(message: types.Message):
    bot = get_bot()
    await bot.delete_message(message.from_user.id, message.message.message_id)

    if await check_sub_channels(CHANNELS, message.from_user.id):
        bot = Settings.objects.get(id = '1')
        user, created = User.objects.get_or_create(tg_user_id=message.from_user.id)

        if created:
            user.tg_user_first_name=message.from_user.first_name
            user.tg_user_last_name=message.from_user.last_name
            user.tg_user_username=message.from_user.username
            user.tg_user_language_code=message.from_user.language_code
            user.save()
        else:
            pass
            
        if bot.logo:
            await message.message.answer_photo(bot.logo, bot.welcome, reply_markup=greet_kb, parse_mode='HTML')
        else:
            await message.message.answer(bot.welcome, reply_markup=greet_kb, parse_mode='HTML')

            await message.answer_photo(photo, bot.welcome, reply_markup=greet_kb, parse_mode='HTML')
    else:
        await bot.send_message(message.from_user.id, NOTSUB_MESSAGE, disable_web_page_preview=True, reply_markup=showChannels())

import json
import requests

# токен от бота
token = '' 

# массив для клавиатуры
keyboard = {
    'inline_keyboard': [
        [
            {
                'text': 'Кнопка 1',
                'callback_data': frwfg'
            }
        ],
        [
            {
                'text': 'Кнопка 2',
                'callback_data': 'gffgf'
            },
            {
                'text': 'Кнопка 3',
                'callback_data': 'fdgdrg'
            }
        ]
    ]
}

# параметры для запроса
payload = {
    'chat_id': id,
    'caption': 'какой котик!',
    'photo': 'фото',
    'reply_markup': json.dumps(keyboard)
}

# отправка запроса в Telegram
res = requests.post('https://api.telegram.org/bot' + token + '/sendPhoto', data=payload)

как сделать кнопку на сайт


Ответы (0 шт):