Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
13 kB
3
Indexable
Never
from BotAmino import *
from PIL import Image, ImageDraw, ImageFont
from easy_pil import Editor, Canvas, load_image, Font
import io
from zipfile import ZipFile
import requests
from os import path
import urllib.request
import datetime
from games import rock_paper
from dateutil import parser
import json 
from time import sleep
from functools import wraps
print("wait...")
secret="31 sxJJIUTx e11faa0d-1d6b-4c61-bb95-530abf800110 103.201.134.7 8682498e44540f2ce02343dd809ebcc12efcecc8 1 1660115636 bGp1L4NphejnK8F9A5HQrTWU4P8"

client = BotAmino("agqauz7sqiwb@1secmail.org",secret)
from pymongo import MongoClient
import unicodedata
clie = MongoClient("mongodb+srv://amino:sagar890@cluster0.fdt73lu.mongodb.net/?retryWrites=true&w=majority")

db = clie["lvl_up"]

put=db["claim"]
client.prefix = "?"  # set the prefix to /
levels={"1":4, "2":5, "3":10, "4":24, "5":50, "6":100, "7":200, "8":500, "9":1000, "10":2000, "11":3000, "12":5000, "13":7000, "14":10000, "15":20000, "16":40000, "17":60000, "18":100000, "19":250000,"20":500000}
def convert(im):
    with io.BytesIO() as f:
        im.save(f, format='PNG')
        return f.getvalue()
def update2(user,time,delta):
	old=put.find_one({"user":user})
	lol={"user":user,"tim":old["tim"],"full_time":old["full_time"]}
	newvalues = { "$set": {"user":user,"tim":time,"full_time":delta}}
	put.update_one(lol, newvalues)
def update(com,user,level):
    put_level = db[com]
    old=put_level.find_one({com:user})
    lev=old["level"]
    lol={com:user,"level":lev}
    newvalues = { "$set": {com:user,"level":level}}
    put_level.update_one(lol, newvalues)

@client.command("alive")
def alive(data):
    data.subClient.send_message(data.chatId,"Zinda hoon lawde")

def zipurl(url):
	resp = urllib.request.urlopen(url)
	zipf = ZipFile(io.BytesIO(resp.read()))
	inflist = zipf.infolist()
	for f in inflist:
	    if "frame" in str(f):
	    	#if str(f.filename) !="frame.webp":
		    ifile = zipf.open(f)
		    img = Image.open(ifile)
		    return img
	

def calPercent(x, y, integer = False):
   percent = x / y * 100
   
   if integer:
       return int(percent)
   return percent
def com(data):
	return data.comId!=11004133
def mett(data):
    return data.authorId in ("25663bd3-3688-4f73-a2ab-8548b0b0cd29")
def dec(text):
    return unicodedata.normalize('NFKD',text)
def ff(name,size):
	return ImageFont.truetype(name,size)
def circle(av):
    circle_image = Image.new('L', (av,av))
    circle_draw = ImageDraw.Draw(circle_image)
    circle_draw.ellipse((0, 0,av,av), fill=255)
    return circle_image

@client.command("help")
def help(data):
    mes="""
[cub] help menu
‣ games
‣ claim
‣ rank
‣ alive"""
    data.subClient.send_message(data.chatId,mes)

@client.command("join",condition=mett)
def j(data):
    id=data.subClient.get_from_code(data.message).objectId
    data.subClient.join_chat(id)
    data.subClient.send_message(data.chatId,"joined")


@client.command('rank')
def cavas(data: Parameters):
        level=data.level
        final=levels[str(level+1)]
        rep=int(data.reputation)
        x=rep-int(levels[str(level)])
        y=int(levels[str(level+1)])-int(levels[str(level)])
        percentage=calPercent(x,y)
        profile1 =load_image("https://i.ibb.co/FJQBSk6/bt.png")
        background = Editor(profile1)
        profile =load_image(str(data.authorIcon))
        #frame=data.subClient.get_user_info(data.authorId).avatarFrame
        profile = Editor(profile).resize((150, 150)).circle_image()
        poppins =ImageFont.truetype('fonts/calibril.ttf', 70)
        poppins_small = Font(path="fonts/calibril.ttf").poppins(size=30)
        square = Canvas((500, 500), "#06FFBF")
        square = Editor(square)
        square.rotate(30, expand=True)
        background.paste(square.image, (600, -250))
        background.paste(profile.image, (30, 30))
        try:
            url=data.json["author"]["avatarFrame"]["resourceUrl"]
            img1=zipurl(url)
            if img1 !=None:
                av2 = Editor(img1).resize((170, 170)).circle_image()
                background.paste(av2, (16, 14))
        except:
            pass
        
        background.rectangle((30, 220), width=650, height=40, fill="white", radius=20)
        background.bar(
            (30, 220),
            max_width=650,
            height=40,
            percentage=percentage,
            fill="#2596be",
            radius=20,
        )
        background.text((200, 40), str(dec(data.author)), font=poppins, color="white")

        background.rectangle((200, 100), width=350, height=2, fill="#17F3F6")
        background.text(
            (200, 130),
            f"Level :{level}"
            + f" Reputation :{rep}",
            font=poppins_small,
            color="white",
        )
        data.subClient.full_embed(message=f"{data.author}",chatId=data.chatId,image=background.image_bytes,link=f"ndc://user-profile/{data.authorId}")
        print("done")


@client.command("kk")
def all(data: Parameters):
        user=str(data.authorId)
        com=str(data.comId)
        put_level = db[com]
        check = "kkkkk"
        #check=put_level.find_one({com:user})
        if check ==None: put_level.insert_one({com:user,"level":data.level})
        else:
            lvl=check["level"]
            if lvl < data.level:
                level=data.level
                #bg=str(f"backround")
                background = Editor("bt.png")
                profile=load_image(data.authorIcon)
                profile = Editor(profile).resize((150, 150)).circle_image()
                square = Canvas((500, 500), "#06FFBF")
                square = Editor(square)
                square.rotate(30, expand=True)
                sus=str(f"lvl/{level}.png")
                ll = Editor(sus).resize((70,70))
                background.paste(ll,(408,249))
                background.paste(square.image,(600, -250))
                background.paste(profile.image, (37,79))
                status=data.json["author"]["accountMembershipStatus"]
                if status == 1:
                    plus = Editor("on.png")
                    background.paste(plus,(295,59))
                else:
                    plus = Editor("off.png")
                    background.paste(plus,(295,59))
                try:
                    img1=zipurl(data.json["author"]["avatarFrame"]["resourceUrl"])
                    if img1 !=None:
                        av2 = Editor(img1).resize((185, 185)).circle_image()
                        background.paste(av2, (20,63))
                except: pass

                background.text((294,121), "Congratulations", font=ff("fonts/ss.ttf",50), color="white")
                background.text((301,192),f"You just reached level {level}", font=ff("fonts/ss.ttf",40), color="white")
                background.text((337,60),str(data.author), font=ff("fonts/ss.ttf",40), color="white")
                data.subClient.full_embed(message=f"{data.author}",chatId=data.chatId,image=background.image_bytes,link=f"ndc://user-profile/{data.authorId}")
                #update(com,user,level)
                print("done")

@client.command("claim",condition=com)
def rest(args):
	now= datetime.datetime.now().day
	full=datetime.datetime.now()
	delta = full - datetime.timedelta(hours=24)
	com=str(args.comId)
	user=str(args.authorId)
	level=int(args.level)
	ccid=None
	find=put.find_one({"user":user})
	if level < 5:
	    args.subClient.send_message(args.chatId,message=f"<$@{args.author}$> you are below level 5",replyTo=args.messageId, mentionUserIds=[args.authorId])
	else:
        	if find == None:
        	    wallet=int(args.subClient.get_wallet_amount())
        	    wikiId=args.subClient.get_user_wikis(userId=args.authorId,size=1).wikiId
        	    #print(wikiId)
        	    if len(wikiId) ==0 or wallet< 40:
        	        blogId=args.subClient.get_user_blogs(userId=args.authorId,size=1).blogId
        	        if len(blogId) ==0:
        	            args.subClient.send_message(args.chatId,message=f"<$@{args.author}$> make a blog or maybe my wallet is empty",replyTo=args.messageId, mentionUserIds=[args.authorId])
        	        else:
        	            args.subClient.send_coins(blogId=blogId[0],coins=40)
        	            args.subClient.send_message(args.chatId,message=f"<$@{args.author}$> claimed props",replyTo=args.messageId, mentionUserIds=[args.authorId])
        	            put.insert_one({"user":user,"tim":now,"full_time":str(delta)})
        	    else:
        	        
        	        args.subClient.send_coins(objectId=wikiId[0],coins=40)
        	        args.subClient.send_message(args.chatId,message=f"<$@{args.author}$> claimed props",replyTo=args.messageId, mentionUserIds=[args.authorId])
        	        put.insert_one({"user":user,"tim":now,"full_time":str(delta)})
        	 
        	else:
        				old=find["tim"]
        				if now-old !=0:
        					
        					wikiId=args.subClient.get_user_wikis(userId=args.authorId,size=1).wikiId
        					wallet=int(args.subClient.get_wallet_amount())
        					if len(wikiId) ==0 or wallet< 40:
        					    blogId=args.subClient.get_user_blogs(userId=args.authorId,size=1).blogId
        					    if len(blogId) ==0:
        					        args.subClient.send_message(args.chatId,message=f"<$@{args.author}$> make a blog or maybe my wallet is empty",replyTo=args.messageId, mentionUserIds=[args.authorId])
        					    else:
        					        args.subClient.send_coins(blogId=blogId[0],coins=40)
        					        args.subClient.send_message(args.chatId,message=f"<$@{args.author}$> claimed props",replyTo=args.messageId, mentionUserIds=[args.authorId])
        					        update2(user,now,str(delta))
        					else:
        					    args.subClient.send_coins(objectId=wikiId[0],coins=40)
        					    args.subClient.send_message(args.chatId,message=f"<$@{args.author}$> claimed props",replyTo=args.messageId, mentionUserIds=[args.authorId])
        					    update2(user,now,str(delta))
        				else:
        					old_date=parser.parse(find["full_time"])
        					
        					time_left=str(full-old_date)
        					yes = time_left.replace(":", ",").split(",")
        					h=24-int(yes[1])
        					m=60-int(yes[2])
        					s=60-float(yes[3])
        					mes=f"time_left:\nhours: {h}\nminutes:{m}\nseconds:{s}"
        					args.subClient.send_message(args.chatId,message=f"<$@{args.author}$> \n{mes}",replyTo=args.messageId, mentionUserIds=[args.authorId])                  
def truth_dare(data: str):
    return requests.get(f"https://api.truthordarebot.xyz/api/{data}").json()["question"]
   
@client.command("games")
def truth(data):
    msg="""
[cub] Games Menu    

‣ truth : send a truth
‣ dare: send a dare
‣ wyr: Would You Rather
‣ nhie: Never Have I Ever
‣ paranoia: ask a paranoia Question}
‣ rps: usage: ?rps rock  options:rock, paper,scissor,lizard,spock"""
    data.subClient.send_message(data.chatId,msg)
    
@client.command("truth")
def truth(data):
    data.subClient.send_message(data.chatId,message=f"<$@{data.author}$>  {truth_dare('truth')}",replyTo=data.messageId, mentionUserIds=[data.authorId])
    
@client.command("dare")
def dare(data):
    data.subClient.send_message(data.chatId,message=f"<$@{data.author}$>  {truth_dare('dare')}",replyTo=data.messageId, mentionUserIds=[data.authorId])
    
@client.command("wyr")
def wyr(data):
    data.subClient.send_message(data.chatId,message=f"<$@{data.author}$>  {truth_dare('wyr')}",replyTo=data.messageId, mentionUserIds=[data.authorId])
    
@client.command("nhie")
def nhie(data):
    data.subClient.send_message(data.chatId,message=f"<$@{data.author}$>  {truth_dare('nhie')}",replyTo=data.messageId, mentionUserIds=[data.authorId])
    
@client.command("paranoia")
def pano(data):
    data.subClient.send_message(data.chatId,message=f"<$@{data.author}$>  {truth_dare('paranoia')}",replyTo=data.messageId, mentionUserIds=[data.authorId])        					              
@client.command("rps")
def lol(data):
    msg=rock_paper.rock_paper_s(data.message)
    if msg!=None: data.subClient.send_message(data.chatId,message=msg,replyTo=data.messageId)
    else: data.subClient.send_message(data.chatId,message=f"wrong choice\nselect:\nrock,paper,scissor,lizard,spock",replyTo=data.messageId)       					              
                    					              
                                
                
import os
from time import sleep
import threading
import sys
def maintenance():
    print("launch maintenance")
    i = 0
    while i < 7200:
        i += 10
        sleep(10)
    os.execv(sys.executable, ["None", os.path.basename(sys.argv[0])])
client.launch()
threading.Thread(target=maintenance).start()
def reconsocketloop():
	while True:
		client.close()
		client.run_amino_socket()
		sleep(120)


socketloop = threading.Thread(target=reconsocketloop, daemon=True)
socketloop.start()

print("Ready")