Проверка создателя частной группы 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)