-
Notifications
You must be signed in to change notification settings - Fork 0
/
script_move.py
137 lines (112 loc) · 3.49 KB
/
script_move.py
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import discord
import asyncio
from discord.utils import get
import time
from colorama import Fore
# create client object.
client = discord.Client()
# Main decorator for search user and give parameters to wraper function
def find_member(func):
async def wrap(*args, **kwargs):
print(client.user)
user_id = args[0]
server_name = args[1]
servers = client.guilds
target = []
for server in servers:
if server.name == server_name:
target.append(server)
afk_room = server.afk_channel
for voice in server.voice_channels:
for member in voice.members:
if member.id == user_id:
target.append(member)
break
else:
print(f"{member.name} - not found. Do you wanna try again? Y/N")
return await try_again()
else:
print(f"{server_name} - not found. Do you wanna try again? Y/N")
return await try_again()
return await func(*args, target[0], target[1])
return wrap
# When client.run() ready to use this function called.
@client.event
async def on_ready():
print("""
Hi And welcome to MoveBot
To start input user id and choose move mode. Try)))
""".center(25))
user_id = int(input("Target user id: "))
server_name = str(input("Server name: "))
print("""
1. Always move to afk.
2. Carousel(Move to each room fast).
3. Kick always from channel.
""")
action = int(input("Choose action id (For example: 1) : "))
if action == 1:
await afk_always(user_id, server_name)
elif action == 2:
await carousel(user_id, server_name)
elif action == 3:
await kick_always(user_id, server_name)
else:
print(Fore.RED + "Bad choose! Try again.")
await on_ready()
# Function can always move user to afk but you need Permissions.move_members.
@find_member
async def afk_always(user_id, server_name):
amount_of_repeat = 0
print("Start: Afk Always to target: ", target_member)
try:
while True:
await target_member.edit(voice_channel=afk_room)
# Move delay
time.sleep(0.3)
amount_of_repeat += 1
except:
print(Fore.RED + "You have not permission to do this!")
exit()
@find_member
async def kick_always(user_id, server_name):
amount_of_repeat = 0
print("Start: Kick Always to target: ", target_member)
try:
while True:
await target_member.edit(voice_channel=None)
# Move delay
time.sleep(0.3)
amount_of_repeat += 1
except:
print(Fore.RED + "You have not permission to do this!")
exit()
# Function can move user to each channel on server but you need Permissions.move_members.
@find_member
async def carousel(user_id, server_name, server_target, target_member):
print(f"Сarousel is activated for user: {target_member.name}, in server: {server_name}.")
for voice in server_target.voice_channels:
try:
await target_member.edit(voice_channel=voice)
print('Move to: ', str(voice.name))
except:
print(Fore.RED + "You have not permission to do this!")
# Move delay
time.sleep(0.3)
async def try_again():
choose = input()
if choose.lower() == 'y' or choose.lower() == 'yes':
await on_ready()
elif choose.lower() == 'n' or choose.lower() == 'no':
exit()
else:
print("I don't understand :(")
await try_again()
if __name__ == '__main__':
print("Wait a little while I prepare your account!")
try:
token_file = open("token.txt", "r")
token = token_file.readline()
client.run(token, bot=False)
except:
print("Token error token! Check your token to validity.")