File size: 4,132 Bytes
8bef42a c5b19bf 8bef42a ff41199 f7bc7c5 ff41199 8bef42a ecf3d1e 8bef42a 99d08e8 8bef42a f7bc7c5 26c910c ecf3d1e 8bef42a f7bc7c5 ecf3d1e f7bc7c5 ecf3d1e 1001fe0 8bef42a f7bc7c5 1001fe0 d82dee8 f154ce2 d82dee8 1001fe0 92e82d0 1001fe0 92e82d0 1001fe0 92e82d0 15bf604 d82dee8 1001fe0 5edf6d2 ecf3d1e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
import logging
from contextlib import asynccontextmanager
from akenoai import AkenoXToJs as js
from akenoai.runner import run_fast
from config import API_ID, API_HASH, BOT_TOKEN, SESSION
logger = logging.getLogger(__name__)
LOGS = logging.getLogger("[akenox]")
logger.setLevel(logging.DEBUG)
fast_app = js.get_app()
client = js.create_pyrogram(
name="fastapi-bot",
api_id=API_ID,
api_hash=API_HASH,
bot_token=BOT_TOKEN
)
user_client = js.create_pyrogram(
name="fastapi-user",
api_id=API_ID,
api_hash=API_HASH,
session_string=SESSION
)
def get_random_from_channel(link):
clean_link = link.split("?")[0]
target_link = clean_link.split("/c/") if "/c/" in clean_link else clean_link.split("/")
random_id = int(target_link[-1].split("/")[-1]) if len(target_link) > 1 else None
desired_username = target_link[3] if len(target_link) > 3 else None
username = (
"@" + desired_username if desired_username else "-100" + target_link[1].split("/")[0]
if len(target_link) > 1 else None
)
return username, random_id
@fast_app.on_event("startup")
async def startup_event():
user = await client.start()
userbot = await user_client.start()
LOGS.info(f"Started Bot: {user.me.first_name}")
LOGS.info(f"Started UserBot: {userbot.me.first_name}")
@fast_app.get("/")
async def hello():
return {"success": "hello world!"}
@fast_app.get("/user/get_story")
async def get_user_story(link=None):
username, random_id = utils.get_random_from_channel(link_story)
try:
stories = await user_client.get_stories(username, story_ids=[random_id])
except Exception as e:
return {"error": str(e)}
if stories:
for story in stories:
file_id = (
story.photo.file_id if story and story.photo else None
or story.video.file_id if story and story.video else None
)
caption = story.caption or f"By {user_client.me.mention}"
if file_id:
return {
"uploaded_file_id": file_id,
"caption": caption
}
else:
return {
"uploaded_file_id": None,
"caption": None
}
@fast_app.get("/user/get_user")
async def get_user(user_id=None):
try:
get_users = await client.get_users(user_id)
response = await js.get_creation_date(
api_key="akeno_OSrXhljIomunACd5JY18jFIeIuuB6Pdx",
user_id=get_users.id
)
except Exception:
return {"error": "Error try again invalid"}
return {
"id": get_users.id,
"is_self": get_users.is_self,
"is_contact": get_users.is_contact,
"is_mutual_contact": get_users.is_mutual_contact,
"is_deleted": get_users.is_deleted,
"is_bot": get_users.is_bot,
"is_verified": get_users.is_verified,
"is_restricted": get_users.is_restricted,
"is_scam": get_users.is_scam,
"is_fake": get_users.is_fake,
"is_support": get_users.is_support,
"is_premium": get_users.is_premium,
"is_contact_require_premium": get_users.is_contact_require_premium,
"is_close_friend": get_users.is_close_friend,
"is_stories_hidden": get_users.is_stories_hidden,
"is_stories_unavailable": get_users.is_stories_unavailable,
"is_business_bot": get_users.is_business_bot,
"first_name": get_users.first_name,
"status": get_users.status.name,
"last_online_date": get_users.last_online_date,
"dc_id": get_users.dc_id,
"username": get_users.username if get_users else None,
"photo": {
"small_file_id": get_users.photo.small_file_id,
"small_photo_unique_id": get_users.photo.small_photo_unique_id,
"big_file_id": get_users.photo.big_file_id,
"has_animation": get_users.photo.has_animation,
"is_personal": get_users.photo.is_personal
},
"creation_date": response
}
run_fast(build=fast_app, port=7860) |