Проверка создателя частной группы Telegram на подписку на определенную Telegram Группу

Есть Telegram бот со своим функционалом, который работает только в личных сообщениях с ботом. В бота перед запуском его основного функционала добавлено действие, которое проверяет подписку на определенную группу. В личных сообщениях подписка проверяется отлично, но в группах..

Хочу расширить возможности бота и сделать возможность его доступным в частных группах тоже. В частных группах он работает корректно, но не получается добавить проверку подписки на определенную группу.

Необходимо проверять статус подписки владельца частной группы. Владелец группы имеет статус creator в своей, и должен являться участником моей группы.


from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor



API_TOKEN = '1111'



bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    await message.reply("? Hi! I’m here and ready to work! Send me any token address\n")

@dp.message_handler(commands=['ghg'])

async def echo_message(msg: types.Message):
    local_parser = cryptoo_parser.Parser()
    if msg.text == "/ghg":
        await msg.reply("? Where is address???", parse_mode='HTML')
        pass
    parts = msg.text.split(maxsplit=1)
    coin_address = parts[1].strip()
    wait_message = await msg.reply("?? Looking for matches...", parse_mode='HTML')
    coin_info = local_parser.parse_coin(coin_address)
    if coin_info == "BAD_ADDRESS":
        await bot.edit_message_text("?‍♂️ Oops! It seems you entered the wrong token address...\nCheck and try again!",
                                    chat_id=wait_message.chat.id, message_id=wait_message.message_id, parse_mode='HTML',
                                    disable_web_page_preview=True)
    elif coin_info == "BAD_PASR":
        await bot.edit_message_text("☹️ Oops! Looks like something went wrong...\nTry again!",
                                    chat_id=wait_message.chat.id, message_id=wait_message.message_id, parse_mode='HTML',
                                    disable_web_page_preview=True)
    else:
        target_coin_cap_round = f'{round(coin_info["target_coin_info"]["target_coin_cap"], 2):,}'
        target_length = len(target_coin_cap_round)
        post_head = f"""✍?<b>Token name</b> – {coin_info["target_coin_info"]["target_coin_name"]} ({coin_info["target_coin_info"]["target_coin_symbol"]})
?<b>Market Cap</b> – ${target_coin_cap_round}
?<b>Holders</b> – {coin_info["target_coin_info"]["target_coin_holders"]}\n\n"""
        all_post = post_head
        for holder in coin_info["holders_info"]:
            all_post += f"""?<b><a href="{coin_info["holders_info"][holder]["holder_link"]}">{holder}</a> | {coin_info["holders_info"][holder]["holder_cap_percent"]}%</b>\n"""
            all_post += f"""{coin_info["target_coin_info"]["target_coin_name"]} (${round(coin_info["holders_info"][holder]["target_coin"]["target_coin_value"], 2)}k)"""
            # all_post += f"""{coin_info["target_coin_info"]["target_coin_name"]} (${"{:.{}f}".format(coin_info["holders_info"][holder]["target_coin"]["target_coin_value"], target_length - len(str(int(coin_info["holders_info"][holder]["target_coin"]["target_coin_value"]))) - 1)}k)"""
            if coin_info["holders_info"][holder]["else_coins"]:
                all_post += ";"
                for else_coin in coin_info["holders_info"][holder]["else_coins"]:
                    all_post += f""" {else_coin} (${round(coin_info["holders_info"][holder]["else_coins"][else_coin], 2)}k);"""
                    # all_post += f""" {else_coin} (${"{:.{}f}".format(coin_info["holders_info"][holder]["else_coins"][else_coin], target_length - len(str(int(coin_info["holders_info"][holder]["else_coins"][else_coin]))) - 1)}k);"""
            if all_post[-1] == ";":
                all_post = all_post[:-1]
            all_post += ".\n\n"
        print(all_post)
        await bot.edit_message_text(all_post, chat_id=wait_message.chat.id, message_id=wait_message.message_id, parse_mode='HTML',
                                    disable_web_page_preview=True)

def round_coin_values(data):
    target_value = round(data['holders_info']['Holder 1']['target_coin']['target_coin_value'], 2)
    data['holders_info']['Holder 1']['target_coin']['target_coin_value'] = target_value

    target_length = len(str(target_value))

    for coin_name, coin_value in data['holders_info']['Holder 1']['else_coins'].items():
        formatted_value = "{:.{}f}".format(coin_value, target_length - len(str(int(coin_value))) - 1)
        data['holders_info']['Holder 1']['else_coins'][coin_name] = float(formatted_value)

    return data

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

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