Untitled
unknown
python
3 years ago
7.2 kB
14
Indexable
from BotAmino import *
import requests
from os import path
import re, urllib.parse, urllib.request, sys
import agorartc
import subprocess
import json
from time import sleep
import socket
from functools import wraps
from contextlib import closing
print("wait...")
from pymongo import MongoClient
vct={}
client.prefix = "."
client.admin_user="25663bd3-3688-4f73-a2ab-8548b0b0cd29"
block=["0d728809-2c54-4d21-9539-0f3ed268affc","0f9ee782-8454-4c9d-9eaf-f4946a236a1d"]
save={}
client.wait=4 # set the prefix to /
def find_free_port():
with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s:
s.bind(('', 0))
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
return s.getsockname()[1]
def chatii(data):
return data.chatId !="226725f7-db44-4b22-9447-50abd47ef4df"
def pre(data):
return data.authorId not in block
live_vc = False
from yt_dlp import YoutubeDL
import os
def telecharger(url,music_name):
music = None
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
'extract-audio': True,
'outtmpl': f"audio/{music_name}.mp3",
}
with YoutubeDL(ydl_opts) as ydl:
video_length = ydl.extract_info(url, download=True).get('duration')
ydl.cache.remove()
return music_name
def send_joinn(token):
t=token['threadId']
#print(t)
port=find_free_port()
save[t]=port
print(save)
subprocess.Popen(f'start /wait python server.py {port}', shell=True)
dat={"data":json.dumps(token)}
sleep(3)
requests.post(f"http://127.0.0.1:{port}/join",data=dat)
return "yo"
def search_internet_music(music_name):
query_string = urllib.parse.urlencode({"search_query": music_name})
formatUrl = urllib.request.urlopen("https://www.youtube.com/results?" + query_string)
search_results = re.findall(r"watch\?v=(\S{11})", formatUrl.read().decode())
clip2 = "https://www.youtube.com/watch?v=" + "{}".format(search_results[0])
return clip2
def send_type(types,chatId):
port=save[chatId]
dat={"type":types}
requests.post(f"http://127.0.0.1:{port}/type",data=dat)
return "ii"
def bot_chat(prompt):
response = openai.Completion.create(
model="text-davinci-002",
prompt=f"{prompt}.",
temperature=0.9,
max_tokens=150,
top_p=1,
frequency_penalty=0.0,
presence_penalty=0.6,
stop=[" Human:", " AI:"])
return response.choices[0].text
@client.command("ai",condition=pre)
def ai(data):
if len(data.message)<11:
data.subClient.send_message(data.chatId,message="type more than 10 words",replyTo=data.messageId)
else:
text=bot_chat(data.message)
#text2=text.replace("\n","")
data.subClient.send_message(data.chatId,message=text,replyTo=data.messageId)
@client.command("vc", condition=chatii)
def vcc(data):
if data.authorId not in block:
if data.message=="":
chatid=data.chatId
else:
chatid=client.get_from_code(data.message).objectId
#vct[chatid]=0
client.start_vc(data.comId,chatid)
sleep(10)
client.send(json.dumps({"o":{"ndcId":data.comId,"threadId":chatid,"id":"337496"},"t":200}))
sleep(2)
#while True:
#if vct[chatid] ==0:
#liv = json.dumps({"o":{"ndcId":data.comId,"threadId":chatid,"joinRole":1,"id":"2249844"},"t":112})
#client.send(liv)
#print("loop")
#sleep(20)
#else: break
@client.command("end_vc",condition=pre)
def vlcc(data):
if data.message=="":
chatid=data.chatId
else:
chatid=client.get_from_code(data.message).objectId
#vct[chatid]=1
try: client.end_vc(data.comId,chatid)
except Exception as e:
print(e)
try: send_type("leave",chatid)
except: pass
def send_play(url,chatId):
port=save[chatId]
dat={"url":url}
res=requests.post(f"http://127.0.0.1:{port}/play",data=dat).text
print(res)
return res
@client.command("pause",condition=pre)
def typte(data):
if data.message=="":
chatid=data.chatId
else:
chatid=client.get_from_code(data.message).objectId
send_type("pause",chatid)
@client.command("resume",condition=pre)
def typtte(data):
if data.message=="":
chatid=data.chatId
else:
chatid=client.get_from_code(data.message).objectId
send_type("resume",chatid)
@client.command("mute",condition=pre)
def typtte(data):
if data.message=="":
chatid=data.chatId
else:
chatid=client.get_from_code(data.message).objectId
send_type("mute",chatid)
@client.command("unmute",condition=pre)
def typtte(data):
if data.message=="":
chatid=data.chatId
else:
chatid=client.get_from_code(data.message).objectId
send_type("unmute",chatid)
@client.command("volume",condition=pre)
def vol(data):
port=save[data.chatId]
dat={"volume":data.message}
requests.post(f"http://127.0.0.1:{port}/volume",data=dat)
@client.command("play_alt",condition=pre)
def pp(data):
chatid="226725f7-db44-4b22-9447-50abd47ef4df"
#dat={"url":search_internet_music(data.message),"threadId":chatid}
send_play(search_internet_music(data.message),chatid)
@client.command("play",condition=pre)
def play(data):
if data.message.startswith("https://") is True:
url=data.message
else:
url=search_internet_music(data.message)
res=send_play(url,data.chatId)
if res!="done":
data.subClient.send_message(data.chatId,message=res)
@client.command("restart",condition=pre)
def pkp(data):
os.execv(sys.executable, ["None", os.path.basename(sys.argv[0])])
@client.event("on_fetch_channel")
def on_chatvie(data):
print("get")
d=json.dumps(data.json)
#print(d)
send_joinn(data.json)
@client.event("on_voice_chat_end")
def on_chat_invi(data):
try:
commuId = int(data.json["ndcId"])
subClient = client.get_community(commuId)
except Exception:
return
args = Parameters(data, subClient)
try: send_type("leave",args.chatId)
except: pass
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(False)
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")
Editor is loading...