Untitled

mail@pastecode.io avatar
unknown
python
2 years ago
65 kB
2
Indexable
Never
import sys
import random
from os import system
#from sidd import sid
import os
import threading
import time
#import txt2pdf
import random

import json
import base64
import requests
#from log import mainn
import random
#from acc import acc_m
from uuid import uuid4
from time import time as timestamp
from threading import Thread
from os import _exit,path
from aminofix.lib.util import exceptions
from ast import literal_eval
done = 'false'
import requests
#from yy import main
from io import BytesIO
import urllib.request
from io import BytesIO
from urllib.request import urlopen
from zipfile import ZipFile
from time import sleep
from threading import Thread
from json import dumps, load
import platform,socket,re,uuid 
from random import choice, randint
from pathlib import Path
from contextlib import suppress
from datetime import datetime
#from pdf2image import convert_from_path
from BotAmino import BotAmino, Parameters

from hashlib import sha1
import names
import random
import hmac

import random,string,hashlib,base64,importlib,threading
#from amino import client
from aminofix.lib.util import exceptions, headers, device, objects

device = device.DeviceGenerator()
#headers.sid = client.Clien
# Big optimisation thanks to SempreLEGIT#1378 ♥

version = "1.9.0"
print(f"AminoBot version : {version}")

path_utilities = "utilities"
path_eljson1 = f"{path_utilities}/elJson.json"
path_eljson2 = f"{path_utilities}/elJson2.json"
path_download = "audio"
path_lock = f"{path_utilities}/locked"


Path(path_download).mkdir(exist_ok=True)
Path(path_lock).mkdir(exist_ok=True)


client = BotAmino()

#client.headers["NDCAUTH"] = f'sid={sid}'
#print(client.sid)
#client.no_command_message = f"This is not a command sorry!\nTry {client.prefix}help for help or send me a message"
#client.wait = 3
#client.spam_message = "Cooldown, please wait before doing a command again..."
bio ="𝘜 𝘴𝘰𝘶𝘯𝘥 𝘣𝘦𝘵𝘵𝘦𝘳 𝘸𝘪𝘵𝘩 𝘺𝘰𝘶𝘳 𝘮𝘰𝘶𝘵𝘩 𝘤𝘭𝘰𝘴𝘦𝘥"
client.prefix="*"
#client.self_callable=True
#client.show_online = True

nick='𝘑𝘶𝘭𝘪𝘴-𝘈𝘭𝘦𝘹𝘪𝘢'



def nope(data):
    return data.authorId in (f"{client.userId}")

def print_exception(exc):
    print(repr(exc))

def yo(data):
    return data.chatId==("42cad00f-ef76-479d-b821-f6475fc95500")

def com(data):
  return data.comId=="12719415"
  
def private(args):
  return args.chatId=="c4fa059b-e344-45d1-836f-f436859fc247"
  
def verif(data):
  return data.chatId=="1a5e5e9c-532b-4eb1-a54b-a8896d02c032"

def tapp(data):
  return data.chatId=="e86b7a5f-15fd-4074-874c-80614d372f34"

def chatj(data):
    return data.chatId=="6abce6e4-8b07-4408-b50e-40edd93d170e"

def is_staff(args):
    return args.authorId in ('a22c8610-b5cb-44b0-9e2f-faf6b3d7bfef')

def join_community(comId: str = None, inv: str = None):
    if inv:
        try:
            client.client.request_join_community(comId=comId, message='Cookie for everyone!!')
            return True
        except Exception as e:
            print_exception(e)
    else:
        try:
            client.client.join_community(comId=comId, invitationId=inv)
            return True
        except Exception as e:
            print_exception(e)



def reset():
        print("argv was",sys.argv)
        print("sys.executable was", sys.executable)
        print("restart now")
        os.execv(sys.executable, ['python'] + sys.argv)



@client.command(condition=nope)
def com(data):
	fok=client.get_from_code(data.message)
	#id=fok.objectId
	comid=fok.path[1:fok.path.index("/")]
	client.join_community(comid)
	data.subClient.send_message(data.chatId,"done")
	reset()        

@client.command(condition=nope)
def pay(data):
  p=data.message
  bb=client.get_from_code(str(p).split()[0])
  idd=bb.objectId
  comId=bb.path[1:bb.path.index("/")]
  cId=int(comId)
  client.join_community(comId)
  sub=client.get_community(cId)
  data.subClient.send_message(data.chatId,"start")
  for _ in range(int(str(p).split()[1])):
    sub.send_coins(blogId=idd,coins=500)



@client.command()
def live(data):
  if __name__ == '__main__':
    while True:
      main(data.comId,data.chatId)
      sleep(30)
    
@client.command(condition=nope)
def logout(data):
  if __name__ == '__main__':
    mainn()



def deviceid():
    hw=(names.get_full_name()+str(random.randint(0,10000000))+platform.version()+platform.machine()+names.get_first_name()+socket.gethostbyname(socket.gethostname())+':'.join(re.findall('..', '%012x' % uuid.getnode()))+platform.processor())
    identifier=sha1(hw.encode('utf-8')).digest()
    mac = hmac.new(bytes.fromhex('76b4a156aaccade137b8b1e77b435a81971fbd3e'), b"\x32" + identifier, sha1)
    return (f"32{identifier.hex()}{mac.hexdigest()}").upper()

@client.command()
def sid_ex(args):
  file=open("sidd.txt","r+")
  file.truncate(0)
  file.close()
  sid()

@client.command(condition=nope)
def dbug(args):
  #args.subClient.delete_message(args.chatId, args.messageId, asStaff=False, reason="Clear")
  args.subClient.send_message(args.chatId,message=args.message, embedLink="ndc://fragment/com.narvii.util.debug.DebugInfoFragment", embedTitle=args.message, embedContent="y")

@client.command(condition=nope)
def cbug(args):
  args.subClient.delete_message(args.chatId, args.messageId, asStaff=False, reason="Clear")
  args.subClient.send_message(args.chatId,message=args.message, embedLink="ndc://fragment/com.narvii.wallet.PurchaseCoinFragment", embedTitle=args.message)

@client.command(condition=nope)
def joinamino(args):
    invit = None
    if client.taille_commu >= 20:
        args.subClient.send_message(args.chatId, "The bot has joined too many communities!")
        return

    staff = args.subClient.get_staff(args.message)

    if args.authorId not in staff:
        args.subClient.send_message(args.chatId, "You need to be in the community's staff!")
        return

    if not staff:
        args.subClient.send_message(args.chatId, "Wrong amino ID!")
        return

    try:
        test = args.message.strip().split()
        amino_c = test[0]
        invit = test[1]
        invit = invit.replace("http://aminoapps.com/invite/", "")
    except Exception:
        amino_c = args.message
        invit = None

    try:
        val = args.subClient.client.get_from_code(f"http://aminoapps.com/c/{amino_c}")
        comId = val.json["extensions"]["community"]["ndcId"]
    except Exception:
        return

    isJoined = val.json["extensions"]["isCurrentUserJoined"]
    if not isJoined:
        size = val.json['extensions']['community']['membersCount']
        if size < 100:
            args.subClient.send_message(args.chatId, "Your community must have at least 100 members")
            return

        join_community(comId, invit)
        val = client.client.get_from_code(f"http://aminoapps.com/c/{amino_c}")
        isJoined = val.json["extensions"]["isCurrentUserJoined"]
        if isJoined:
            client.add_community(args.message)
            client[comId].run()
            auth = client.get_community(comId).get_user_info(args.message).nickname
            client.get_community(comId).ask_amino_staff(f"Hello! I am a bot and i can do a lot of stuff!\nI've been invited here by {auth}.\nIf you need help, you can do !help.\nEnjoy^^")
            args.subClient.send_message(args.chatId, "Joined!")
            return
        args.subClient.send_message(args.chatId, "Waiting for join!")
        return
    else:
        args.subClient.send_message(args.chatId, "Allready joined!")
        return

    args.subClient.send_message(args.chatId, "Something went wrong!")

@client.command(condition=nope)
def tr(args):
  content = args.subClient.get_message_info(chatId = args.chatId, messageId = args.replyId).content
  print(content)
  translator = google_translator() 
  detect_result = translator.detect(content)[1]
  translate_text = translator.translate(content)
  print(translate_text)
  reply = "[IC]"+str(translate_text)+"\n\n[c]Translated Text from "+str(detect_result)
  print(reply)
  args.subClient.send_message(chatId=args.chatId,message=reply,replyTo=args.messageId)
  
def remove(input):
    try:
        os.remove(f"{input}")
        print("removed")
    except Exception:
        pass
        
@client.command(condition=nope)
def bg(data):
    try:
      os.remove("bg.png")
    except:
      pass
    image = data.subClient.get_chat_thread(chatId=data.chatId).backgroundImage
    if image:
        print(image)
        filename = "bg.png"
        remove(filename)
        urllib.request.urlretrieve(image, filename)
        
        with open(filename, 'rb') as fp:
            data.subClient.send_message(data.chatId, file=fp, fileType="image")
        os.remove(filename)

@client.command(condition=nope)
def gif(args):
    filename = "1.gif"
    remove(filename)
    req=requests.get(f"https://api.giphy.com/v1/gifs/search?q={args.message}&api_key=12ss5TcLvRjUze&offset=0&limit=25",headers={"Accept-Language": "en-US",
             "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 5.1; Google Build/vbox86p-userdebug; com.narvii.amino.master/3.4.33592)",
             "Host": "api.giphy.com",
             "Connection":"Keep-Alive",
             "Accept-Encoding": "gzip"})
    data=req.json()
    urls=[]
    f=data["data"]
    for g in f:
       p=g["images"]["fixed_height_downsampled"]["url"]
       urls.append(p)
    r=random.randint(1,20)
    image=urls[r]
    #print(image)
    
    urllib.request.urlretrieve(image, filename)
    with open(filename, 'rb') as fp:
        args.subClient.send_message(chatId=args.chatId,file=fp,fileType="gif")
        remove(filename)
        
@client.command(condition=nope)
def title(args):
    if client.check(args, 'staff', id_=client.botId):
        try:
            title, color = args.message.split("color=")
            color = color if color.startswith("#") else f'#{color}'
        except Exception:
            title = args.message
            color = None

        mention = args.subClient.get_message_info(chatId=args.chatId, messageId=args.messageId).mentionUserIds
        if mention:
            args.authorId = mention
            args.author = args.subClient.get_user_info(args.authorId).nickname

        if args.subClient.add_title(args.authorId, title, color):
            args.subClient.send_message(args.chatId, f"The titles of {args.author} has changed")




@client.command(condition=nope)
def url(args):
  print(args.authorId)
  data = args.subClient.get_message_info(chatId = args.chatId, messageId = args.messageId)
  reply_message = data.json['extensions']
  if reply_message:
    image = data.json['extensions']['replyMessage']['mediaValue']
    args.subClient.send_message(args.chatId, message=image)


#@client.command(condition=nope)
def find(data,chatId):
  while True:
    p=data.subClient.get_chat_messages(chatId=chatId,size=1).content
    #print(p)
    for j in p:
      g=j
    #print(g)
    l=f"{g}"
    length=str(len(l))
    if "6"==length:
      break
  return g

@client.command(condition=nope)
def acc(data):
  acc_m()
  h=open("acc.txt").read().splitlines()
  r=random.randint(0,10)
  send=h[r]
  data.subClient.send_message(data.chatId,f"{send}")


@client.command(condition=nope)
def acchh(data):
  try: os.remove("code.png")
  except: pass
  type=data.subClient.get_chat_thread(chatId=data.chatId).type
  #print(
  if type==0:
      dev=deviceid()
      #print(data.replySrc)
      email=client.gen_email()
      
      if data.message == "":
        nickname="bott"
        password="dick.py"
        ff=f"using default\nnickname:{nickname}\npassword:{password}"
        data.subClient.send_message(data.chatId,ff)
        with TorRequests() as tor_requests:
            with tor_requests.get_session() as sess:
                client.request_verify_code(sess=sess,email = email,dev=dev)
                link=client.get_message(email)
                try: os.remove("code.png")
                except: pass
                wget.download(url=link,out="code.png")
                with open("code.png","rb") as file:
                  data.subClient.send_message(chatId=data.chatId,fileType="image",file=file)
                while True:
                  try: os.remove("code.png")
                  except: pass
                  g=find(data,data.chatId)
                  #print(g)
                  sec=client.register(sess=sess,email = email,password = password,nickname = nickname, verificationCode = g,deviceId=dev)
                  print(sec)
                  if sec["api:statuscode"]==3102:
                    data.subClient.send_message(data.chatId,"verification code is incorrect try again")
                  if sec["api:statuscode"]==0:
                    ac={}
                    secret=sec["secret"]
                    ac["email"]=str(email)
                    ac["password"]=str(password)
                    ac["device"]=str(dev)
                    dd=json.dumps(ac)
                    data.subClient.send_message(data.chatId,f"{dd}")
                    ac["secret"]=secret
                    t=json.dumps(ac)
                    with open ("accounts.json","a") as f:
                      f.write(f"{t},")
                      print("Saved in File accounts.json")
                    break
                  else:
                    data.subClient.send_message(data.chatId,f"{sec}")
                    break
        
        
          
      else:
        
        p=data.message
        try: os.remove("code.png")
        except: pass
        nickname=str(p).split()[0]
        password=str(p).split()[1]
        with TorRequests() as tor_requests:
            with tor_requests.get_session() as sess:
                client.request_verify_code(sess=sess,email = email,dev=dev)
                link=client.get_message(email)
                wget.download(url=link,out="code.png")
                with open("code.png","rb") as file:
                  data.subClient.send_message(chatId=data.chatId,fileType="image",file=file)
                while True:
                  try: os.remove("code.png")
                  except: pass
                  g=find(data,data.chatId)
                  sec=client.register(sess=sess,email = email,password = password,nickname = nickname, verificationCode = g,deviceId=dev)
                  if sec["api:statuscode"]==3102:
                    data.subClient.send_message(data.chatId,"verification code is incorrect try again")
                  if sec["api:statuscode"]==0:
                    ac={}
                    secret=sec["secret"]
                    ac["email"]=str(email)
                    ac["password"]=str(password)
                    ac["device"]=str(dev)
                    dd=json.dumps(ac)
                    data.subClient.send_message(data.chatId,f"{dd}")
                    ac["secret"]=secret
                    t=json.dumps(ac)
                    with open ("accounts.json","a") as f:
                      f.write(f"{t},")
                      print("Saved in File accounts.json")
                    break
                  else:
                    data.subClient.send_message(data.chatId,f"{sec}")
                    break
  else:
      try: os.remove("code.png")
      except: pass
      data.subClient.send_message(data.chatId,"only for dm")

  

@client.command()
def cookie(args):
    #print(args.chatId)
    args.subClient.send_message(args.chatId, f"Here is a cookie for {args.author} 🍪")


@client.command(condition=nope)
def ramen(args):
    args.subClient.send_message(args.chatId, f"Here are some ramen for {args.author} 🍜")


@client.command(condition=nope)
def dice(args):
    if not args.message:
        args.subClient.send_message(args.chatId, f"🎲 -{randint(1, 20)},(1-20)- 🎲", replyTo=args.messageId)
        return
    try:
        n1, n2 = map(int, args.message.split('d'))
        times = n1 if n1 < 20 else 20
        max_num = n2 if n2 < 1_000_000 else 1_000_000
        numbers = [randint(1, (max_num)) for _ in range(times)]
        args.subClient.send_message(args.chatId, f'🎲 -{sum(numbers)},[ {" ".join(map(str, numbers))}](1-{max_num})- 🎲')
    except Exception as e:
        print_exception(e)


@client.command(condition=nope)
def join(args):
    val = args.subClient.join_chatroom(args.message, args.chatId)
    if val or val == "":
        args.subClient.send_message(args.chatId, f"Chat {val} joined".strip())
    else:
        args.subClient.send_message(args.chatId, "No chat joined")


@client.command(condition=nope)
def joinall(args):
    args.subClient.join_all_chat()
    args.subClient.send_message(args.chatId, "All chat joined")


@client.command(condition=is_staff)
def leaveall(args):
    args.subClient.send_message(args.chatId, "Leaving all chat...")
    args.subClient.leave_all_chats()


@client.command(condition=nope)
def leave(args):
    if args.message:
        chat_ide = args.subClient.get_chat_id(args.message)
        if chat_ide:
            args.chatId = chat_ide
    args.subClient.leave_chat(args.chatId)



def extra(uid : str):
    event=uuid4()
    data = {
        "reward":{"ad_unit_id":"255884441431980_807351306285288","credentials_type":"publisher","custom_json":{"hashed_user_id":f"{uid}"},"demand_type":"sdk_bidding","event_id":f"{event}","network":"facebook","placement_tag":"default","reward_name":"Amino Coin","reward_valid":"true","reward_value":2,"shared_id":"dc042f0c-0c80-4dfd-9fde-87a5979d0d2f","version_id":"1569147951493","waterfall_id":"dc042f0c-0c80-4dfd-9fde-87a5979d0d2f"},
        "app":{"bundle_id":"com.narvii.amino.master","current_orientation":"portrait","release_version":"3.4.33567","user_agent":"Dalvik\/2.1.0 (Linux; U; Android 10; G8231 Build\/41.2.A.0.219; com.narvii.amino.master\/3.4.33567)"},"date_created":1620295485,"session_id":"49374c2c-1aa3-4094-b603-1cf2720dca67","device_user":{"country":"US","device":{"architecture":"aarch64","carrier":{"country_code":602,"name":"Vodafone","network_code":0},"is_phone":"true","model":"GT-S5360","model_type":"Samsung","operating_system":"android","operating_system_version":"29","screen_size":{"height":2260,"resolution":2.55,"width":1080}},"do_not_track":"false","idfa":"7495ec00-0490-4d53-8b9a-b5cc31ba885b","ip_address":"","locale":"en","timezone":{"location":"Asia\/Seoul","offset":"GMT+09:00"},"volume_enabled":"true"}
        }

    headers={
        "cookies":"__cfduid=d0c98f07df2594b5f4aad802942cae1f01619569096",
        "authorization":"Basic NWJiNTM0OWUxYzlkNDQwMDA2NzUwNjgwOmM0ZDJmYmIxLTVlYjItNDM5MC05MDk3LTkxZjlmMjQ5NDI4OA=="
    }
    requests.post("https://ads.tapdaq.com/v4/analytics/reward",json=data, headers=headers)


@client.command(condition=is_staff)
def clear(args):
    if client.check(args, 'staff', client.botId):
        try:
            size = int(args.message)
        except Exception:
            size = 1
        args.subClient.delete_message(args.chatId, args.messageId, asStaff=True, reason="Clear")

        if size > 99:
            size = 99

        messages = args.subClient.get_chat_messages(chatId=args.chatId, size=size).messageId

        for message in messages:
            args.subClient.delete_message(args.chatId, messageId=message, asStaff=True, reason="Clear")

@client.command(condition=nope)
def video_chat(args):
  client.start_vc(chatId=args.chatId,comId=args.comId)
  
@client.command(condition=nope)
def end(data):
  client.end_vc(chatId=data.chatId,comId=data.comId)

#client.command(condition=coin)
def tap(args):
  args.subClient.send_message(args.chatId,"start")
  for _ in range(250):
        Thread(target=extra,args=(args.authorId,)).start()
  #args.subClient.send_message(args.chatId,"finished")

@client.command(condition=nope)
def spam(args):
    quantity, msg = args.message.split()
    quantity = 1 if not quantity.isdigit() else int(quantity)
    quantity = 10 if quantity > 10 else quantity

    for _ in range(quantity):
        args.subClient.send_message(args.chatId, msg)


@client.command(condition=nope)
def mention(args):
    val = args.subClient.get_user_id(args.message)
    if not val:
        args.subClient.send_message(chatId=args.chatId, message="Username not found")
        return

    with suppress(Exception):
        args.subClient.send_message(chatId=args.chatId, message=f"‎‏‎‏@{val[0]}‬‭", mentionUserIds=[val[1]])


@client.command("all",condition=nope)
def everyone(args):
    mention = [userId for userId in args.subClient.get_chat_users(chatId=args.chatId).userId]
    # test = "".join(["‎‏‎‏‬‭" for user in args.subClient.get_chat_users(chatId=args.chatId).userId])
    args.subClient.send_message(chatId=args.chatId, message=f"@everyone {args.message}", mentionUserIds=mention)


@client.command(condition=nope)
def viewmode(data):
    id = data.subClient.get_chat_threads(start=0, size=40).chatId
    for chat in id:
        with suppress(Exception):
            data.subClient.edit_chat(chatId=chat, viewOnly=True)

@client.command(condition=private)
def vdisable(data):
    if data.message == "":
       data.subClient.edit_chat(chatId="8528067a-5c84-4da1-8444-ca4b79fa9cab", viewOnly=False)
       data.subClient.send_message(chatId=data.chatId, message="done") 
    else:
        id =client.get_from_code(data.message).objectId
        data.subClient.edit_chat(chatId=id, viewOnly=False)
        data.subClient.send_message(chatId=data.chatId, message="done")

@client.command(condition=private)
def vmode(data):
    if data.message == "":
       data.subClient.edit_chat(chatId="8528067a-5c84-4da1-8444-ca4b79fa9cab", viewOnly=True)
       data.subClient.send_message(chatId=data.chatId, message="done")
    else:
        id =client.get_from_code(data.message).objectId
        data.subClient.edit_chat(chatId=id, viewOnly=True)
        data.subClient.send_message(chatId=data.chatId, message="done")

def Tass(data):
    listusers=[]
    for userId ,status in zip(data.profile.userId,data.profile.status):
       if status!=9 and status !=10:
           listusers.append(userId)
    return listusers

@client.command(condition=nope)
def img(data):
	url=getImageDirectory(data.message)
	urllib.request.urlretrieve(url,f"{data.message}.png")
	with open(f"{data.message}.png", 'rb') as file:
		try:
			data.subClient.send_message(chatId =data.chatId, file = file, fileType = "image")
			os.remove(f"{data.message}.png")
		except:
			pass


@client.command(condition=nope)
def msg(args):
    value = 0
    size = 1
    ment = None
    with suppress(Exception):
        args.subClient.delete_message(args.chatId, args.messageId, asStaff=False, reason="Clear")

    if "chat=" in args.message:
        chat_name = args.message.rsplit("chat=", 1).pop()
        chat_ide = args.subClient.get_chat_id(chat_name)
        if chat_ide:
            args.chatId = chat_ide
        args.message = " ".join(args.message.strip().split()[:-1])

    try:
        size = int(args.message.split().pop())
        args.message = " ".join(args.message.strip().split()[:-1])
    except ValueError:
        size = 0

    try:
        value = int(args.message.split().pop())
        args.message = " ".join(args.message.strip().split()[:-1])
    except ValueError:
        value = size
        size = 1

    if not args.message and value == 1:
        args.message = f"‎‏‎‏@{args.author}‬‭"
        ment = args.authorId

    if size > 10:
        size = 10

    for _ in range(size):
        with suppress(Exception):
            args.subClient.send_message(chatId=args.chatId, message=f"{args.message}", messageType=value, mentionUserIds=ment)


# add banned words
@client.command(condition=is_staff)
def abw(args):
    if not args.message or args.message in args.subClient.banned_words:
        return
    try:
        args.message = args.message.lower().strip().split()
    except Exception:
        args.message = [args.message.lower().strip()]
    args.subClient.add_banned_words(args.message)
    args.subClient.send_message(args.chatId, "Banned word list updated")


# remove banned words
@client.command(condition=is_staff)
def rbw(args):
    if not args.message:
        return
    try:
        args.message = args.message.lower().strip().split()
    except Exception:
        args.message = [args.message.lower().strip()]
    args.subClient.remove_banned_words(args.message)
    args.subClient.send_message(args.chatId, "Banned word list updated")


@client.command("bwl", condition=nope)
def banned_word_list(args):
    val = ""
    if args.subClient.banned_words:
        for elem in args.subClient.banned_words:
            val += elem + "\n"
            if len(val) >= 1950:
                args.subClient.send_message(args.chatId, val)
                val = ""
    else:
        val = "No words in the list"
    args.subClient.send_message(args.chatId, val)


@client.command(condition=is_staff)
def sw(args):
    args.subClient.set_welcome_message(args.message)
    args.subClient.send_message(args.chatId, "Welcome message changed")


@client.command("chatlist", condition=is_staff)
def get_chats(args):
    val = args.subClient.get_chats()
    for title, _ in zip(val.title, val.chatId):
        args.subClient.send_message(args.chatId, title)


@client.command("chatid", condition=nope)
def chat_id(args):
    val = args.subClient.get_chats()
    for title, chat_id in zip(val.title, val.chatId):
        if args.message.lower() in title.lower():
            args.subClient.send_message(args.chatId, f"{title} | {chat_id}")


@client.command("leaveamino", condition=nope)
def leaveamino(args):
    args.subClient.send_message(args.chatId, "Leaving the amino!")
    args.subClient.leave_community()


@client.command(condition=nope)
def p(args):
    with suppress(Exception):
        args.subClient.delete_message(args.chatId, args.messageId, asStaff=False)

    transactionId = "b8ad47da-2103-4c5f-976a-f16989da31ef"
    if args.message:
        chat_ide = args.subClient.get_chat_id(args.message)
        if chat_ide:
            args.chatId = chat_ide
    for _ in range(5):
        args.subClient.pay(coins=args.message, chatId=args.chatId, transactionId=transactionId)

@client.command(condition=nope)
def c(args):
  with suppress(Exception):
    args.subClient.delete_message(args.chatId, args.messageId, asStaff=False, reason="Clear")
    for _ in range(10):
      args.subClient.send_coins(chatId=args.chatId,coins=args.message)

def telecharger(url):
    music = None
    if ("=" in url and "/" in url and " " not in url) or ("/" in url and " " not in url):
        if "=" in url and "/" in url:
            music = url.rsplit("=", 1)[-1]
        elif "/" in url:
            music = url.rsplit("/")[-1]

        if music in os.listdir(path_download):
            return music

        ydl_opts = {
            'format': 'bestaudio/best',
            'postprocessors': [{
                'key': 'FFmpegExtractAudio',
                'preferredcodec': 'mp3',
                'preferredquality': '192',
                }],
            'extract-audio': True,
            'outtmpl': f"{path_download}/{music}.webm",
            }

        with YoutubeDL(ydl_opts) as ydl:
            video_length = ydl.extract_info(url, download=True).get('duration')
            ydl.cache.remove()

        url = music+".mp3"

        return url, video_length
    return False, False

@client.command(condition=nope)
def joinn(args):
  p=client.get_from_code(args.message).objectId
  args.subClient.join_chat(p)


def decoupe(musical, temps):
    size = 170
    with open(musical, "rb") as fichier:
        nombre_ligne = len(fichier.readlines())

    if temps < 180 or temps > 540:
        return False

    decoupage = int(size*nombre_ligne / temps)

    t = 0
    file_list = []
    for a in range(0, nombre_ligne, decoupage):
        b = a + decoupage
        if b >= nombre_ligne:
            b = nombre_ligne

        with open(musical, "rb") as fichier:
            lignes = fichier.readlines()[a:b]

        with open(musical.replace(".mp3", "PART"+str(t)+".mp3"),  "wb") as mus:
            for ligne in lignes:
                mus.write(ligne)

        file_list.append(musical.replace(".mp3", "PART"+str(t)+".mp3"))
        t += 1
    return file_list


@client.command('🌚', condition=nope)
def refid(args):
  with suppress(Exception):
    args.subClient.delete_message(args.chatId, args.messageId, asStaff=False, reason="Clear")
    sleep(3)
    args.subClient.refid(chatId=args.chatId,message='6:40 pm', messageType=109)
 
 
@client.command(condition=nope)
def kik(args):
	       list = []
	       chatMembers = args.subClient.get_chat_users(chatId=args.chatId,start=0,size=100).nickname
	       for i in range(int(args.message)):
	         member = random.choice(chatMembers)
	         args.subClient.send_message(args.chatId,message=f"{member} has left the conversation.", messageType=109)
	         list.append(member)


@client.command(condition=nope)
def convert(data):
	video = pafy.new(data.message)
	best = video.getbest()
	playurl = best.url
	urllib.request.urlretrieve(playurl,"yo.mp3")
	with open("yo.mp3", 'rb') as file:
		try:
			data.subClient.send_message(chatId=data.chatId,file=file,fileType="audio")
			os.remove("yo.mp3")
		except Exception as e:
		  print(e)
		  pass




@client.command(condition=nope)
def play(args):
    music, size = telecharger(args.message)
    if music:
        music = f"{path_download}/{music}"
        val = decoupe(music, size)

        if not val:
            try:
                with open(music, 'rb') as fp:
                    args.subClient.send_message(args.chatId, file=fp, fileType="audio")
            except Exception:
                args.subClient.send_message(args.chatId, "Error! File too heavy (9 min max)")
            os.remove(music)
            return

        os.remove(music)
        for elem in val:
            with suppress(Exception):
                with open(elem, 'rb') as fp:
                    args.subClient.send_message(args.chatId, file=fp, fileType="audio")
            os.remove(elem)
        return
    args.subClient.send_message(args.chatId, "Error! Wrong link")

  

@client.command("help",condition=nope)
def helper(args):
    if not args.message:
        args.subClient.send_message(args.chatId, helpMsg1)
    elif args.message == "msg":
        args.subClient.send_message(args.chatId, help_message)
    elif args.message == "ask":
        args.subClient.send_message(args.chatId, helpAsk)
    else:
        args.subClient.send_message(args.chatId, "No help is available for this command")



import os 
import sys
@client.command()
def restart(data):
  data.subClient.send_message(data.chatId,"done")
  sys.argv
  sys.executable
  print("restart now")
  os.execv(sys.executable, ['python'] + sys.argv)




@client.command(condition=nope)
def stop(args):
    args.subClient.send_message(args.chatId, "Stopping Bot")
    os.execv(sys.executable, ["None", "None"])


@client.command(condition=nope)
def uinfo(args):
    val = ""
    val2 = ""
    uid = ""
    with suppress(Exception):
        val = args.subClient.client.get_user_info(args.message)
        val2 = args.subClient.get_user_info(args.message)

    if not val:
        uid = args.subClient.get_user_id(args.message)
        if uid:
            val = args.subClient.client.get_user_info(uid[1])
            val2 = args.subClient.get_user_info(uid[1])

    if not val:
        with suppress(Exception):
            lin = args.subClient.client.get_from_code(f"http://aminoapps.com/u/{args.message}").json["extensions"]["linkInfo"]["objectId"]
            val = args.subClient.client.get_user_info(lin)

        with suppress(Exception):
            val2 = args.subClient.get_user_info(lin)

    with suppress(Exception):
        with open(path_eljson1, "w") as file:
            file.write(dumps(val.json, sort_keys=True, indent=4))

    with suppress(Exception):
        with open(path_eljson2, "w") as file:
            file.write(dumps(val2.json, sort_keys=True, indent=4))

    for i in (path_eljson1, path_eljson2):
        if os.path.getsize(i):
            txt2pdf.callPDF(i, "result.pdf")
            pages = convert_from_path('result.pdf', 150)
            file = 'result.jpg'
            for page in pages:
                page.save(file,  'JPEG')
                with open(file, 'rb') as fp:
                    args.subClient.send_message(args.chatId, file=fp, fileType="image")
                os.remove(file)
            os.remove("result.pdf")

    if not os.path.getsize(path_eljson1) and not os.path.getsize(path_eljson1):
        args.subClient.send_message(args.chatId, "Error!")

def bubble_info(bubbleId:str,comId):
    
    api=f"https://service.narvii.com/api/v1/x{comId}/s/chat/chat-bubble/{bubbleId}"
    res=requests.get(api,headers=client.headers)
    url=json.loads(res.text)['chatBubble']['resourceUrl']
    #print(url)
    if res.status_code !=200:
        return json.loads(res.text)
    else: return url
    
def upload_bubble(file,comId):
    data=file
    response = requests.post(f"https://service.narvii.com/api/v1/x{comId}/s/chat/chat-bubble/templates/107147e9-05c5-405f-8553-af65d2823457/generate", data=data, headers=client.headers)
    bid=json.loads(response.text)['chatBubble']['bubbleId']
    print(bid)
    response = requests.post(f"https://service.narvii.com/api/v1/x{comId}/s/chat/chat-bubble/{bid}", data=data, headers=client.headers)
    if response.status_code !=200:
        return json.loads(response.text)
    else: return bid

@client.command(condition=nope)
def copybubble(args):
  
    a=args.subClient.get_message_info(args.chatId,args.replyId).json["chatBubble"]["resourceUrl"]
    with urlopen(a) as zipresp:
    	yo=zipresp.read()
    f=upload_bubble(file=k,comId=args.comId)
    print("uploaded")
    args.subClient.apply_bubble(chatId=args.chatId,bubbleId=f,applyToAll=True)
    args.subClient.send_message(chatId=args.chatId,message='done')
    
def upload(url):
    link = requests.get(url)
    result = BytesIO(link.content)
    return result

@client.command(condition=nope)
def profile(data):
    e=data.subClient.edit_profile
    m=data.subClient.get_message_info(data.chatId,data.replyId)
    id=m.json['uid']
    k=data.subClient.get_user_info(id)
    try:
        bg=k.json["extensions"]["style"]["backgroundMediaList"]
        for bgg in bg:
            for i in bgg:
                if i != None and i != 100 and len(i):
                    #print(i)
                    e(backgroundImage=i)
    except:
        pass
    try:
      for mediaList in k.mediaList:
        for L in mediaList:
          if L != None and L != 100 and len(L):
            e(imageList=[upload(L)])
    except:
      pass
    e(nickname=k.nickname)
    e(content=k.content)
    e(backgroundImage=k.backgroundImage)
    e(icon=upload(k.icon))
    e(backgroundColor=k.backgroundColor)
    
    print(k.avatarFrameId)
    try:
        data.subClient.apply_avatar_frame(avatarId=k.avatarFrameId)
    except:
        pass
       
    


   
    print("done")
@client.command(condition=nope)
def copyall(data):
    u=data.subClient.get_message_info(data.chatId,data.replyId).json["chatBubble"]["resourceUrl"]
    yo=urlopen(u).read()
    a=data.subClient.get_message_info(data.chatId,data.replyId).json["chatBubble"]["bubbleId"]
    try:
      data.subClient.apply_bubble(chatId=data.chatId,bubbleId=a,applyToAll=False)
    except:
      f=upload_bubble(file=yo,comId=data.comId)
      data.subClient.apply_bubble(chatId=data.chatId,bubbleId=f,applyToAll=False)
      pass
    print(f)
    for _ in range(2):
        cc(data)
    
    data.subClient.send_message(chatId=data.chatId,message="done")

@client.command(condition=nope)
def restore(data):
    data.subClient.edit_profile(nickname=f"bᥲkᥙg᥆:3",icon=upload('http://mm1.narvii.com/8156/de2b0d7f8c9cfecbb0108097a071f1aad9a094b32276bb76r7-736-736_00.jpg'),imageList=[upload ('http://mm1.narvii.com/8156/9b3bf94901f5f93b539b3bf99b3bf96f3bf994d51ca6bd24r7-735-788_00.jpg')],content=f"into 🍉", backgroundColor=f"#000000")
    try:
        data.subClient.apply_avatar_frame(avatarId='ee5cded3-9679-4f42-8e21-f8608fa694aa')
    except:
        pass
    try:
        data.subClient.apply_bubble(chatId=data.chatId,bubbleId='6375fd04-2e7d-4f94-b59f-d0a30d9ed643',applyToAll=False)
    except:
        pass

@client.command(condition=nope)
def cinfo(args):
    val = ""
    with suppress(Exception):
        val = args.subClient.client.get_from_code(f"http://aminoapps.com/c/{args.message}")

    with suppress(Exception):
        with open(path_eljson1, "w") as file:
            file.write(dumps(val.json, sort_keys=True, indent=4))

    if os.path.getsize(path_eljson1):
        txt2pdf.callPDF(path_eljson1, "result.pdf")
        pages = convert_from_path('result.pdf', 150)
        for page in pages:
            file = 'result.jpg'
            page.save(file,  'JPEG')
            with open(file, 'rb') as fp:
                args.subClient.send_message(args.chatId, file=fp, fileType="image")
            os.remove(file)
        os.remove("result.pdf")

    if not os.path.getsize(path_eljson1):
        args.subClient.send_message(args.chatId, "Error!")


@client.command(condition=nope)
def sendinfo(args):
    if args.message != "":
        arguments = args.message.strip().split()
        for eljson in (path_eljson1, path_eljson2):
            if Path(eljson).exists():
                arg = arguments.copy()
                with open(eljson, 'r') as file:
                    val = load(file)
                try:
                    memoire = val[arg.pop(0)]
                except Exception:
                    args.subClient.send_message(args.chatId, 'Wrong key!')
                if arg:
                    for elem in arg:
                        try:
                            memoire = memoire[str(elem)]
                        except Exception:
                            args.subClient.send_message(args.chatId, 'Wrong key!')
                args.subClient.send_message(args.chatId, memoire)


@client.command(condition=is_staff)
def cohost(data):
    mention = data.subClient.get_message_info(chatId=data.chatId, messageId=data.messageId).mentionUserIds
    data.subClient.edit_chat(data.chatId, coHosts=mention)


@client.command("global",condition=nope)
def globall(data):
    mention = data.subClient.get_message_info(chatId=data.chatId, messageId=data.messageId).mentionUserIds
    for user in mention:
        AID = client.get_user_info(userId=str(user)).aminoId
        data.subClient.send_message(data.chatId, message="https://aminoapps.com/u/"+str(AID))


@client.command("global2")
def get_global(args):
    val = args.subClient.get_user_id(args.message)[1]
    if val:
        ide = args.subClient.client.get_user_info(val).aminoId
        args.subClient.send_message(args.chatId, f"http://aminoapps.com/u/{ide}")
    else:
        args.subClient.send_message(args.chatId, "Error!")


@client.command(condition=nope)
def follow(args):
    args.subClient.follow_user(args.authorId)
    args.subClient.send_message(args.chatId, "Now following you!")


@client.command(condition=nope)
def unfollow(args):
    args.subClient.unfollow_user(args.authorId)
    args.subClient.send_message(args.chatId, "Unfollow!")


@client.command(condition=nope)
def stopamino(args):
    args.subClient.stop_instance()
    del client[args.subClient.community_id]


@client.command(condition=nope)
def block(args):
    val = args.subClient.get_user_id(args.message)
    if val:
        args.subClient.client.block(val[1])
        args.subClient.send_message(args.chatId, f"User {val[0]} blocked!")


@client.command(condition=nope)
def unblock(args):
    val = args.subClient.client.get_blocked_users()
    for aminoId, userId in zip(val.aminoId, val.userId):
        if args.message in aminoId:
            args.subClient.client.unblock(userId)
            args.subClient.send_message(args.chatId, f"User {aminoId} unblocked!")


@client.command(condition=is_staff)
def accept(args):
    if args.subClient.accept_role(args.chatId):
        args.subClient.send_message(args.chatId, "Accepted!")
        return
    val = args.subClient.get_notices(start=0, size=25)
    for elem in val:
        print(elem["title"])

    res = None

    for elem in val:
        if 'become' in elem['title'] or "host" in elem['title']:
            res = elem['noticeId']

        if res and args.subClient.accept_role(res):
            args.subClient.send_message(args.chatId, "Accepted!")
            return
    else:
        args.subClient.send_message(args.chatId, "Error!")


@client.command(condition=nope)
def say(args):
    audio_file = f"{path_download}/ttp{randint(1,500)}.mp3"
    langue = list(lang.tts_langs().keys())
    if not args.message:
        args.message = args.subClient.get_chat_messages(chatId=args.chatId, size=2).content[1]
    gTTS(text=args.message, lang="hi", slow=False).save(audio_file)
    try:
        with open(audio_file, 'rb') as fp:
            args.subClient.send_message(args.chatId, file=fp, fileType="audio")
    except Exception:
        args.subClient.send_message(args.chatId, "Too heavy!")
    os.remove(audio_file)


@client.command(condition=nope)
def ask(args):
    lvl = ""
    boolean = 1
    if "lvl=" in args.message:
        lvl = args.message.rsplit("lvl=", 1)[1].strip().split(" ", 1)[0]
        args.message = args.message.replace("lvl="+lvl, "").strip()
    elif "lvl<" in args.message:
        lvl = args.message.rsplit("lvl<", 1)[1].strip().split(" ", 1)[0]
        args.message = args.message.replace("lvl<"+lvl, "").strip()
        boolean = 2
    elif "lvl>" in args.message:
        lvl = args.message.rsplit("lvl>", 1)[1].strip().split(" ", 1)[0]
        args.message = args.message.replace("lvl>"+lvl, "").strip()
        boolean = 3
    try:
        lvl = int(lvl)
    except ValueError:
        lvl = 20

    args.subClient.ask_all_members(args.message+f"\n[CUI]This message was sent by {args.author}\n[CUI]I am a bot and have a nice day^^", lvl, boolean)
    args.subClient.send_message(args.chatId, "Asking...")


@client.command(condition=nope)
def askstaff(args):
    args.subClient.send_message(args.chatId, "Asking...")
    amino_list = client.client.sub_clients()
    for commu in amino_list.comId:
        client.get_community(commu).ask_amino_staff(message=args.message)
    args.subClient.send_message(args.chatId, "Asked")

@client.command("lockall",condition=nope)
def lock_all(args):
	c=client.commands_list()
	for command in c:
	  list = command.lower().strip().split()
	  #list = [command.lower().strip()]
	  #print(list)
	  args.subClient.add_locked_command(list)
	
	args.subClient.send_message(args.chatId, "Locked command list updated")

@client.command(condition=is_staff)
def prefix(args):
    if args.message:
        args.subClient.set_prefix(args.message)
        args.subClient.send_message(args.chatId, f"prefix set as {args.message}")


@client.command("lock", nope)
def lock_command(args):
    if not args.message or args.message in args.subClient.locked_command or args.message not in client.get_commands_names() or args.message in ("lock", "unlock"):
        return
    try:
        args.message = args.message.lower().strip().split()
    except Exception:
        args.message = [args.message.lower().strip()]
    args.subClient.add_locked_command(args.message)
    args.subClient.send_message(args.chatId, "Locked command list updated")


@client.command("unlock", nope)
def unlock_command(args):
    if args.message:
        try:
            args.message = args.message.lower().strip().split()
        except Exception:
            args.message = [args.message.lower().strip()]
        args.subClient.remove_locked_command(args.message)
        args.subClient.send_message(args.chatId, "Locked command list updated")


@client.command("llock", nope)
def locked_command_list(args):
    val = ""
    if args.subClient.locked_command:
        for elem in args.subClient.locked_command:
            val += elem+"\n"
    else:
        val = "No locked command"
    args.subClient.send_message(args.chatId, val)


@client.command("alock", nope)
def admin_lock_command(args):
    if not args.message or args.message not in client.get_commands_names() or args.message == "alock":
        return

    command = args.subClient.admin_locked_command
    args.message = [args.message]

    if args.message[0] in command:
        args.subClient.remove_admin_locked_command(args.message)
    else:
        args.subClient.add_admin_locked_command(args.message)

    args.subClient.send_message(args.chatId, "Locked command list updated")


@client.command("allock", nope)
def locked_admin_command_list(args):
    val = ""
    if args.subClient.admin_locked_command:
        for elem in args.subClient.admin_locked_command:
            val += elem+"\n"
    else:
        val = "No locked command"
    args.subClient.send_message(args.chatId, val)


@client.command("keepu", condition=is_staff)
def keep_favorite_users(args):
    if client.check(args, "staff", id_=client.botId):
        users = args.subClient.favorite_users
        try:
            val = args.subClient.get_user_id(args.message)
            user, userId = val[0], val[1]
        except Exception:
            args.subClient.send_message(args.chatId, "Error, user not found!")
            return
        if userId not in users:
            args.subClient.add_favorite_users(userId)
            args.subClient.send_message(args.chatId, f"Added {user} to favorite users")
            with suppress(Exception):
                args.subClient.favorite(time=1, userId=userId)
        return
    elif not client.check(args, 'staff', id_=client.botId):
        args.subClient.send_message(args.chatId, "The bot need to be in the staff!")
    else:
        args.subClient.send_message(args.chatId, "Error!")


@client.command("unkeepu", condition=is_staff)
def unkeep_favorite_users(args):
    if client.check(args, "staff", id_=client.botId):
        users = args.subClient.favorite_users
        try:
            val = args.subClient.get_user_id(args.message)
            user, userId = val[0], val[1]
        except Exception:
            args.subClient.send_message(args.chatId, "Error, user not found!")
            return
        if userId in users:
            args.subClient.remove_favorite_users(userId)
            args.subClient.send_message(args.chatId, f"Removed {user} to favorite users")
            with suppress(Exception):
                args.subClient.unfavorite(userId=userId)
        return
    elif not client.check(args, 'staff', id_=client.botId):
        args.subClient.send_message(args.chatId, "The bot need to be in the staff!")
    else:
        args.subClient.send_message(args.chatId, "Error!")

@client.command(condition=verif)
def verify(data):
    u=data.subClient.get_user_info(data.authorId).customTitles
    print(u)
    if u is None:
        u=[{"title":""}]
    #print(u)
    if [obj for obj in u if obj['title'] != 'verified']:
        #subClient.kick(chatId=data.chatId,userId=data.authorId,allowRejoin=True)
        title="verified"
        color=f"#000000"
        data.subClient.add_title(data.authorId, title, color)
        data.subClient.send_message(data.chatId,f"verified {data.author}")
        #break
    else:
        data.subClient.send_message(data.chatId,f"Already verified {data.author}")
        
  
@client.command(".")
def invite(args):
  with suppress(Exception):
    args.subClient.invite_to_vc(chatId=args.chatId,userId=args.authorId)

@client.command("keepc", condition=is_staff)
def keep_favorite_chats(args):
    if client.check(args, 'staff', id_=client.botId):
        chats = args.subClient.favorite_chats
        with suppress(Exception):
            chat = args.subClient.get_from_code(f"{args.message}")
            if chat.objectId not in chats:
                args.subClient.add_favorite_chats(chat.objectId)
                args.subClient.send_message(args.chatId, "Added to favorite chats")
            return

        val = args.subClient.get_chats()

        for title, chatId in zip(val.title, val.chatId):
            if args.message == title and chatId not in chats:
                args.subClient.add_favorite_chats(chatId)
                args.subClient.send_message(args.chatId, f"Added {title} to favorite chats")
                with suppress(Exception):
                    args.subClient.favorite(time=1, chatId=args.chatId)
                return

        for title, chatId in zip(val.title, val.chatId):
            if args.message.lower() in title.lower() and chatId not in chats:
                args.subClient.add_favorite_chats(chatId)
                args.subClient.send_message(args.chatId, f"Added {title} to favorite chats")
                with suppress(Exception):
                    args.subClient.favorite(time=1, chatId=chatId)
                return
    elif not client.check(args, 'staff', id_=client.botId):
        args.subClient.send_message(args.chatId, "The bot need to be in the staff!")
    else:
        args.subClient.send_message(args.chatId, "Error!")


@client.command("unkeepc", condition=is_staff)
def unkeep_favorite_chats(args):
    if args.subClient.is_in_staff(client.botId):
        chats = args.subClient.favorite_chats

        with suppress(Exception):
            chat = args.subClient.get_from_code(f"{args.message}")
            if chat.objectId in chats:
                args.subClient.remove_favorite_chats(chat.objectId)
                args.subClient.send_message(args.chatId, "Removed to favorite chats")
            return

        val = args.subClient.get_chats()

        for title, chatid in zip(val.title, val.chatId):
            if args.message == title and chatid in chats:
                args.subClient.remove_favorite_chats(chatid)
                args.subClient.unfavorite(chatId=chatid)
                args.subClient.send_message(args.chatId, f"Removed {title} to favorite chats")
                return

        for title, chatid in zip(val.title, val.chatId):
            if args.message.lower() in title.lower() and chatid in chats:
                args.subClient.remove_favorite_chats(chatid)
                args.subClient.unfavorite(chatId=chatid)
                args.subClient.send_message(args.chatId, f"Removed {title} to favorite chats")
                return

    elif not client.check(args, 'staff', id_=client.botId):
        args.subClient.send_message(args.chatId, "The bot need to be in the staff!")
    else:
        args.subClient.send_message(args.chatId, "Error!")


@client.command("welcome", condition=is_staff)
def welcome_channel(args):
    args.subClient.set_welcome_chat(args.chatId)
    args.subClient.send_message(args.chatId, "Welcome channel set!")


@client.command("unwelcome", condition=is_staff)
def unwelcome_channel(args):
    args.subClient.unset_welcome_chat()
    args.subClient.send_message(args.chatId, "Welcome channel unset!")


@client.command(condition=nope)
def level(args):
    try:
        args.message = int(args.message)
    except Exception:
        args.subClient.send_message(args.chatId, "Error, wrong level")
        return
    if args.message > 20:
        args.message = 20
    if args.message < 0:
        args.message = 0
    args.subClient.set_level(args.message)
    args.subClient.send_message(args.chatId, f"Level set to {args.message}!")


@client.command(condition=nope)
def taxe(args):
    coins = args.subClient.get_wallet_amount()
    if coins >= 1:
        amt = 0
        while coins > 500:
            args.subClient.pay(500, chatId=args.chatId)
            coins -= 500
            amt += 500
        args.subClient.pay(int(coins), chatId=args.chatId)
        args.subClient.send_message(args.chatId, f"Sending {coins+amt} coins...")
    else:
        args.subClient.send_message(args.chatId, "Account is empty!")



@client.command(condition=nope)
def id(data):
    if data.message=="":
        data.subClient.send_message(chatId=data.chatId,message=f"{data.comId}")
        data.subClient.send_message(chatId=data.chatId,message=data.chatId)
    else:
        bb=client.get_from_code(data.message)
        
        cid=bb.path[1:bb.path.index("/")]
        data.subClient.send_message(chatId=data.chatId,message=f"{cid}")
        try:
            chatId=bb.objectId
            data.subClient.send_message(chatId=data.chatId,message=f"{chatId}")
        except:
            pass

@client.command(condition=nope)
def test(data):
    print(data.info.message.author.icon, data.info.message.author.icon)
    data.subClient.send_message(data.chatId, message="Hello!^^", embedTitle=f"{data.author} is here!", embedImage=None)


helpMsg1 = """
[[ᴄʙ]-- ᴄᴏᴍᴍᴏɴ ᴄᴏᴍᴍᴀɴᴅ --  

★ ʜᴇʟᴘ (ᴄᴏᴍᴍᴀɴᴅ)  
★ ᴛɪᴛʟᴇ (ᴛɪᴛʟᴇ)	  =͟͟͞͞➳❥  
★ ᴅɪᴄᴇ (xᴅʏ)	=͟͟͞͞➳❥   
★ ᴊᴏɪɴ (ᴄʜᴀᴛ).  
 ★ᴍᴇɴᴛɪᴏɴ(ᴜsᴇʀ)        
★ sᴘᴀᴍ (ᴀᴍᴏᴜɴᴛ) 
★ᴍsɢ(ᴛʏᴘᴇ). =͟͟͞͞➳❥   ★ʙᴡʟ
★ ʟʟᴏᴄᴋ =͟͟͞͞➳❥.     ★ ᴄʜᴀᴛʟɪsᴛ. 
 ★ ɢʟᴏʙᴀʟ (ʟɪɴᴋ)  ★ ʟᴇᴀᴠᴇ
★ ғᴏʟʟᴏᴡ	=͟͟͞͞➳❥ . ★ᴜɴғᴏʟʟᴏᴡ	     ★ ᴄᴏɴᴠᴇʀᴛ (ᴜʀʟ)   ★ᴘᴠᴘ.   ★sʜɪᴘ.➳❥.         ★ᴘʀᴀɴᴋ(ᴀᴍᴏᴜɴᴛ)      
★ sʀᴄ (sᴇᴀʀᴄʜ) ➳❥. ★ɪᴍᴀɢᴇ.       	 ★ sᴀʏ.   =͟͟͞͞➳❥          ★ ɢɪғ.   
 ★ ɢɪᴠᴇ	=͟͟͞͞➳❥          ★ ʙɢ.   
 ★ ᴛʀ     =͟͟͞͞➳❥         ★ ɢᴇᴛ.
"""

helpMsg2 = """
[CB]-- STAFF COMMAND --

• accept\t: accept the staff role
• abw (word list)\t:  add a banned word to the list*
• rbw (word list)\t:  remove a banned word from the list*
• sw (message)\t:  set the welcome message for new members (will start as soon as the welcome message is set)
• welcome\t:  set the welcome channel**
• unwelcome\t:  unset the welcome channel**
• ask (message)(lvl=)\t: ask to all level (lvl) something**
• clear (amount)\t:  clear the specified amount of message from the chat (max 50)*
• joinall\t:  join all public channels
• leaveall\t:  leave all public channels
• leaveamino\t: leave the community
• all\t: mention all the users of a channel
• prefix (prefix)\t: set the prefix for the amino
• keepu (user)\t: keep in favorite an user*
• unkeepu (user)\t: remove from favorite an user*
• keepc (chat)\t: keep in favorite a chat*
• unkeepc (chat)\t: remove from favorite a chat*
"""

helpMsg3 = f"""
[CB]-- SPECIAL --

• joinamino (amino id): join the amino (you need to be in the amino's staff)**
• uinfo (user): will give informations about the user²
• cinfo (aminoId): will give informations about the community²
• sendinfo (args): send the info from uinfo or cinfo²

[CB]-- NOTE --

*(only work if bot is in staff)
**(In developpement)
²(only for devlopper or bot owner)

[CI]You want to support my work? You can give me AC!^^

[C]-- all commands are available for the owner of the bot --
"""


help_message = """
--MESSAGES--

0 - BASE
1 - STRIKE
50 - UNSUPPORTED_MESSAGE
57 - REJECTED_VOICE_CHAT
58 - MISSED_VOICE_CHAT
59 - CANCELED_VOICE_CHAT
100 - DELETED_MESSAGE
101 - JOINED_CHAT
102 - LEFT_CHAT
103 - STARTED_CHAT
104 - CHANGED_BACKGROUND
105 - EDITED_CHAT
106 - EDITED_CHAT_ICON
107 - STARTED_VOICE_CHAT
109 - UNSUPPORTED_MESSAGE
110 - ENDED_VOICE_CHAT
113 - EDITED_CHAT_DESCRIPTION
114 - ENABLED_LIVE_MODE
115 - DISABLED_LIVE_MODE
116 - NEW_CHAT_HOST
124 - INVITE_ONLY_CHANGED
125 - ENABLED_VIEW_ONLY
126 - DISABLED_VIEW_ONLY

- chat="chatname": will send the message in the specified chat
"""

helpAsk = """
Example :
- !ask Hello! Can you read this : [poll | http://aminoapp/poll]? Have a nice day!^^ lvl=6
"""

"""
link_list =  ["https://amino.com/c/"]


@client.on_message()
def on_message(data):
    [data.subClient.delete_message(data.chatId, data.messageId, reason=f"{data.message}", asStaff=True) for elem in link_list if elem in data.message]
"""
JOIN_LEAVE_DETECTOR={}
WARNS = []
ANTI_SPAM = {}
#@client.on_member_join_chat()
#@client.on_member_leave_chat()
def on_join_leave(data):
    user_id = data.authorId
    
    if user_id != client.userId:
        
        if JOIN_LEAVE_DETECTOR.get(user_id) is None:
            print(user_id)
            JOIN_LEAVE_DETECTOR[user_id] = int(time.time())
            #print(JOIN_LEAVE_DETECTOR)
        elif int(time.time()) - JOIN_LEAVE_DETECTOR[user_id] <= 1:
            try:
              data.subClient.kick(userId=user_id, chatId=data.chatId, allowRejoin=False)
            except:
              pass
            print("kicked")
            #data.subClient.send_message(chatId=data.chatId,message=f"I kicked {data.author} for Join-leave spam")
        elif int(time.time()) - JOIN_LEAVE_DETECTOR[user_id] > 1:
            JOIN_LEAVE_DETECTOR[user_id] = int(time.time())
      
#@client.event("on_group_member_join")
def on_antispm(data):
    try:
        commuId = 195570892
        sub_client = client.get_community(int(commuId))
    except Exception:
        return
    args=Parameters(data,sub_client)
    lev=sub_client.get_user_info(args.authorId).level
    nick=sub_client.get_user_info(args.authorId).nickname
    if lev < 3:
      try:
        sub_client.kick(userId=args.authorId, chatId=args.chatId, allowRejoin=False)
        m = sub_client.get_chat_messages(size=5, chatId=args.chatId).messageId
        for id in m:
          sub_client.delete_message(args.chatId,id)
      except:
        pass
    if "Ayato" in nick:
      try:
        sub_client.kick(userId=args.authorId, chatId=args.chatId, allowRejoin=False)
      except:
        pass

#@client.event("on_image_message")
#@client.event("on_text_message")
def on_antispam(data):
    try:
        commuId = 195570892
        sub_client = client.get_community(int(commuId))
    except Exception:
        return
    args=Parameters(data,sub_client)
    user_id =args.authorId
    if user_id != client.userId:
        if ANTI_SPAM.get(user_id) is None:
            ANTI_SPAM[user_id] = int(time.time())
        elif int(time.time()) - ANTI_SPAM[user_id] <= 0.5:
            if WARNS.count(user_id) >= 4:
                try:
                  sub_client.kick(userId=user_id, chatId=args.chatId, allowRejoin=False)
                  m = sub_client.get_chat_messages(size=10, chatId=args.chatId).messageId
                  for id in m:
                    sub_client.delete_message(args.chatId,id)
                except:
                  pass
                print(f"{user_id} removed for spam")
                for i in WARNS:
                    if i == user_id:
                        WARNS.remove(user_id)
            else:
                WARNS.append(user_id)
        elif int(time.time()) - ANTI_SPAM[user_id] > 1:
            ANTI_SPAM[user_id] = int(time.time())
            for i in WARNS:
                if i == user_id:
                    WARNS.remove(user_id)

#@client.event("on_voice_chat_end")
def on_chat(data):
    try:
        commuId = 195570892
        subClient = client.get_community(int(commuId))
    except Exception:
        return
    args=Parameters(data,subClient)
    try:
      #print(args.chatId)
      if args.chatId in ("4bc4fc90-0ded-401d-9125-7aefd1a59af8","9f246ca7-0b45-4974-af49-9b4ff96f9c0e","48bcd71b-2109-44d1-9a8f-1a60e488481f"):
        reset()
    except Exception as f:
      print(f)
#@client.event("on_screen_room_end")
def on_vhat(data):
    try:
        commuId = 195570892
        subClient = client.get_community(int(commuId))
    except Exception:
        return
    args=Parameters(data,subClient)
    try:
      #print(args.chatId)
      if args.chatId in ("4bc4fc90-0ded-401d-9125-7aefd1a59af8","9f246ca7-0b45-4974-af49-9b4ff96f9c0e","48bcd71b-2109-44d1-9a8f-1a60e488481f"):
        reset()
    except Exception as f:
      print(f)
#@client.event("on_screen_room_end")
def on_cat(data):
    try:
        commuId = 195570892
        subClient = client.get_community(int(commuId))
    except Exception:
        return
    args=Parameters(data,subClient)
    try:
      #print(args.chatId)
      if args.chatId in ("4bc4fc90-0ded-401d-9125-7aefd1a59af8","9f246ca7-0b45-4974-af49-9b4ff96f9c0e","48bcd71b-2109-44d1-9a8f-1a60e488481f"):
        reset()
    except Exception as f:
      print(f)
#@client.event("on_group_member_join")
def on_chat(data):
    try:
        commuId = 267385755
        subClient = client.get_community(int(commuId))
    except Exception:
        return
    args=Parameters(data,subClient)
    #print(args
    #print(args.chatId)
    if args.chatId!="86751255-d3e8-471c-a7f5-670168017302":
      #print(args.chatId)
      u=subClient.get_user_info(args.authorId).customTitles
      if u is None:u=[{"title":""}]
      if [obj for obj in u if obj['title'] != 'verified']:
          subClient.kick(chatId=args.chatId,userId=args.authorId,allowRejoin=True)
#@client.event("on_avatar_chat_start")
def oat(data):
    try:
        commuId = 195570892
        sub_client = client.get_community(int(commuId))
    except Exception:
        return
    args=Parameters(data,sub_client)
    print(args.author)
    try:
      sub_client.delete_message(args.chatId,args.messageId)
    except:
      pass
    try:
      sub_client.kick(userId=args.authorId, chatId=args.chatId, allowRejoin=False)
    except:
      pass
    
    

#@client.event("on_text_message")
def on_chat(data):
    
    try:
        commuId = 195570892
        subClient = client.get_community(int(commuId))
    except Exception:
        return
    args=Parameters(data,subClient)
    #print(args
    print(args.chatId)

#@client.event("on_chat_invite")
def on_chat_invite(data):
    try:
        commuId = 227276247
        subClient = client.get_community(commuId)
    except Exception:
        return

    args = Parameters(data, subClient)

    subClient.join_chatroom(chatId=args.chatId)
    subClient.send_message(args.chatId, f"Hello!\n[B]I am a bot, if you have any question ask a staff member! owner: http://aminoapps.com/p/67y5sw")

#import operator    
#@client.on_member_join_chat(condition=chatj)
def verification(data):
  try:
    #commuId = 227276247
    subClient = client.get_community(12719415)
  except Exception:
    return
  #args = Parameters(data, subClient)
  
  with suppress(Exception):
    nick=subClient.get_user_info(data.authorId).nickname
    if not "✓" in nick:
        subClient.kick(chatId=data.chatId,userId=data.authorId,allowRejoin=True)
		
##@client.on_message(condition=chatj)
def verificati(data):
  try:
    commuId = 267385755
    subClient = client.get_community(int(267385755))
  except Exception:
    return
  #args = Parameters(data, subClient)
  if data.authorId!="6959294f-dc51-47b0-9fc6-16c1ce0d5520":
      ff=data.message
      if str(len(f"{ff}"))!="6":
          subClient.delete_message(messageId=data.messageId,chatId=data.chatId,asStaff=True,reason="only for code")
  
  #with suppress(Exception):
    #if not "✓" in nick:
        #subClient.kick(chatId=data.chatId,userId=data.authorId,allowRejoin=True)

@client.on_all()
def on_message(data):
    content = data.message
    #print(content)
    mtype = data.info.message.type
    
    if (mtype == 100) | (mtype == 109) | (mtype == 107) | (mtype == 110) | (mtype == 108) | (mtype == 111) | (mtype == 55) | (mtype == 56) | (mtype == 57) | (mtype == 58) | (mtype == 59) | (mtype == 60):
        if data.comId==195570892:
	        if content is None:
	            #print("jk")
	            pass
	        else:
	            #print("yes")
	            #subClient = client.get_community(int(267385755))
	            lista=data.subClient.get_chat_thread(data.chatId).coHosts
	            if client.userId in lista:
	                try: data.subClient.delete_message(data.chatId,data.messageId)
	                except: pass
	                try: data.subClient.kick(chatId=data.chatId, userId=data.authorId, allowRejoin=False)
	                except: pass
	          #print("ghjk")
	          #try:
	            #data.subClient.kick(chatId=data.chatId, userId=data.authorId, allowRejoin=False)
	            #data.subClient.delete_message(data.chatId,data.messageId)
	          #except:
	           #pass

    

#@client.on_member_join_chat(condition=tapp)
def say_yo(data):
  try:
    u=data.subClient.get_user_info(data.authorId).customTitles
    if u is None:u=[]
    if [obj for obj in u if obj['title'] == 'verified']:
        subClient.kick(chatId=data.chatId,userId=data.authorId,allowRejoin=True)
      
  except:
    pass




def maintenance():
    print("launch maintenance")
    i = 0
    while i < 7200:
        i += 10
        time.sleep(10)
    os.execv(sys.executable, ["None", os.path.basename(sys.argv[0])])


client.launch(True)
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")