2021-10-05 14:06:16 +02:00
from webserver import keep_alive
import os
import nextcord
from nextcord . ext import commands
2021-10-10 08:51:29 +02:00
import time
2021-10-05 14:06:16 +02:00
import json
import requests
2021-10-14 09:12:25 +02:00
PREFIX = " $ "
bot = commands . Bot ( command_prefix = PREFIX , description = " Hi " )
bot . remove_command ( " help " )
2021-10-05 14:06:16 +02:00
2021-10-19 16:27:25 +02:00
version = " Bot v1.6 "
2021-10-10 08:51:29 +02:00
ctime = time . strftime ( " Today is %X %x " , time . localtime ( ) )
2021-10-05 14:06:16 +02:00
2021-10-14 09:12:25 +02:00
2021-10-05 14:06:16 +02:00
@bot.event
async def on_ready ( ) :
print ( f " Bot logged as { bot . user } | { version } " )
2021-10-10 08:51:29 +02:00
print ( f " { ctime } " )
2021-10-14 09:12:25 +02:00
await bot . change_presence (
status = nextcord . Status . online , activity = nextcord . Game ( " $help " )
)
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def help ( ctx ) :
2021-10-14 09:12:25 +02:00
await ctx . send (
f " Мои команды: { PREFIX } help | { PREFIX } ping | { PREFIX } clear | { PREFIX } hello | { PREFIX } github | { PREFIX } ver | { PREFIX } say | { PREFIX } serverinfo | { PREFIX } clean | { PREFIX } send_m "
)
print ( f " [Logs:utils] Информация о командах бота была выведена | { PREFIX } help " )
@bot.command (
aliases = [
" Ping " ,
" PING " ,
" pING " ,
" ping " ,
" Пинг " ,
" ПИНГ " ,
" пИНГ " ,
" пинг " ,
" Понг " ,
" ПОНГ " ,
" пОНГ " ,
" понг " ,
]
)
async def __ping (
ctx ,
) : # Объявление асинхронной функции __ping с возможностью публикации сообщения
ping = bot . ws . latency # Получаем пинг клиента
ping_emoji = " 🟩🔳🔳🔳🔳 " # Эмоция пинга, если он меньше 100ms
2021-10-05 14:06:16 +02:00
if ping > 0.10000000000000000 :
2021-10-14 09:12:25 +02:00
ping_emoji = " 🟧🟩🔳🔳🔳 " # Эмоция пинга, если он больше 100ms
2021-10-05 14:06:16 +02:00
if ping > 0.15000000000000000 :
2021-10-14 09:12:25 +02:00
ping_emoji = " 🟥🟧🟩🔳🔳 " # Эмоция пинга, если он больше 150ms
2021-10-05 14:06:16 +02:00
if ping > 0.20000000000000000 :
2021-10-14 09:12:25 +02:00
ping_emoji = " 🟥🟥🟧🟩🔳 " # Эмоция пинга, если он больше 200ms
2021-10-05 14:06:16 +02:00
if ping > 0.25000000000000000 :
2021-10-14 09:12:25 +02:00
ping_emoji = " 🟥🟥🟥🟧🟩 " # Эмоция пинга, если он больше 250ms
2021-10-05 14:06:16 +02:00
if ping > 0.30000000000000000 :
2021-10-14 09:12:25 +02:00
ping_emoji = " 🟥🟥🟥🟥🟧 " # Эмоция пинга, если он больше 300ms
2021-10-05 14:06:16 +02:00
if ping > 0.35000000000000000 :
2021-10-14 09:12:25 +02:00
ping_emoji = " 🟥🟥🟥🟥🟥 " # Эмоция пинга, если он больше 350ms
message = await ctx . send (
" Пожалуйста, подождите. . . "
) # Переменная message с первоначальным сообщением
await message . edit (
content = f " Понг! { ping_emoji } ` { ping * 1000 : .0f } ms` :ping_pong: "
) # Редактирование первого сообщения на итоговое (Н а сам пинг)
print (
f " [Logs:utils] Н а данный момент пинг { ping * 1000 : .0f } ms | { PREFIX } ping "
) # Вывод пинга в консоль
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def hello ( ctx ) :
author = ctx . message . author
2021-10-14 09:12:25 +02:00
await ctx . send ( f " Привет, { author . mention } ! " )
print ( f " [Logs:utils] Приветствие было выведено | { PREFIX } hello " )
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def ver ( ctx ) :
await ctx . send ( f " { version } | Сделано CreeperXP#0363 " )
2021-10-14 09:12:25 +02:00
print ( f " [Logs:utils] Информация о боте была выведена | { PREFIX } ver " )
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def clear ( ctx , amount = 5 ) :
2021-10-14 09:12:25 +02:00
await ctx . channel . purge ( limit = amount + 1 )
print ( f " [Logs:utils] { amount } сообщений удалено| { PREFIX } purge " )
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def say ( ctx , * , text ) :
2021-10-14 09:12:25 +02:00
await ctx . message . delete ( )
2021-10-19 16:27:25 +02:00
author = ctx . message . author
username = author . name
develop = " CreeperXP "
if username == develop :
await ctx . message . delete ( )
await ctx . send ( embed = nextcord . Embed ( description = text ) )
print ( f " [Logs:utils] Сообщение пересказано ботом | { PREFIX } say " )
else :
await ctx . send ( " Ты не разработчик бота! " )
2021-10-14 09:12:25 +02:00
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def time ( ctx ) :
2021-10-14 09:12:25 +02:00
await ctx . send ( f " { ctime } " )
print ( f " [Logs:utils] Время было выведено: { ctime } | { PREFIX } time " )
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def serverinfo ( ctx ) :
2021-10-14 09:12:25 +02:00
role_count = len ( ctx . guild . roles )
serverinfoEmbed = nextcord . Embed ( color = ctx . author . color )
serverinfoEmbed . add_field ( name = " Название " , value = f " { ctx . guild . name } " , inline = False )
serverinfoEmbed . add_field (
name = " Кол-во юзеров " , value = f " { ctx . guild . member_count } " , inline = False
)
serverinfoEmbed . add_field (
name = " Уровень безопасности " ,
value = f " { ctx . guild . verification_level } " ,
inline = False ,
)
serverinfoEmbed . add_field ( name = " Кол-во ролей " , value = f " { role_count } " , inline = False )
serverinfoEmbed . add_field ( name = " ID сервера " , value = f " { ctx . guild . id } " , inline = False )
2021-10-05 14:06:16 +02:00
2021-10-14 09:12:25 +02:00
await ctx . send ( embed = serverinfoEmbed )
2021-10-05 14:06:16 +02:00
2021-10-07 12:22:25 +02:00
@bot.command ( )
async def userinfo ( ctx , user : nextcord . User ) :
user_id = user . id
username = user . name
avatar = user . avatar . url
2021-10-14 09:12:25 +02:00
await ctx . send ( f " ID: { user_id } | NICK: { username } \n { avatar } " )
print ( f " [Logs:utils] Информация о { username } была выведена | { PREFIX } userinfo " )
2021-10-07 12:22:25 +02:00
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def clean ( ctx , amount = None ) :
await ctx . channel . purge ( limit = int ( amount ) )
2021-10-14 09:12:25 +02:00
print ( f " [Logs:utils] { amount } сообщений удалено | { PREFIX } clean " )
2021-10-05 14:06:16 +02:00
class Confirm ( nextcord . ui . View ) :
def __init__ ( self ) :
super ( ) . __init__ ( )
self . value = None
@nextcord.ui.button ( label = " Да " , style = nextcord . ButtonStyle . danger )
2021-10-14 09:12:25 +02:00
async def confirm (
self , button : nextcord . ui . Button , interaction : nextcord . Interaction
) :
await interaction . response . send_message (
2021-10-19 16:27:25 +02:00
" https://github.com/CreeperXP/xpyct_bot " , ephemeral = True
2021-10-14 09:12:25 +02:00
)
2021-10-05 14:06:16 +02:00
self . value = True
self . stop ( )
@nextcord.ui.button ( label = " Нет " , style = nextcord . ButtonStyle . blurple )
2021-10-14 09:12:25 +02:00
async def cancel (
self , button : nextcord . ui . Button , interaction : nextcord . Interaction
) :
2021-10-05 14:06:16 +02:00
await interaction . response . send_message ( " Н у ладно :(" , ephemeral = True )
self . value = False
self . stop ( )
2021-10-14 09:12:25 +02:00
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def github ( ctx ) :
view = Confirm ( )
await ctx . send ( " Перейти на GiHub? " , view = view )
await view . wait ( )
if not view . value == None :
print ( " Timed Out " )
if view . value == True :
print ( " Ссылка выведена " )
if view . value == False :
print ( " Ссылка не выведена " )
2021-10-19 16:27:25 +02:00
print ( f " [Logs:utils] Ссылка на GitHub была выведена | { PREFIX } github " )
2021-10-14 09:12:25 +02:00
2021-10-05 14:06:16 +02:00
@bot.command ( )
async def send_m ( ctx , member : nextcord . Member , * , text ) :
2021-10-14 09:12:25 +02:00
await ctx . message . delete ( )
2021-10-19 16:27:25 +02:00
author = ctx . message . author
user_name = author . name
develop = " CreeperXP "
if user_name == develop :
await member . send ( f " От { ctx . author . name } : " , embed = nextcord . Embed ( description = text ) )
print ( f " [Logs:utils] Сообщение от { ctx . author . name } было отправлено { member . name } | { PREFIX } send_m " )
else :
await ctx . send ( " Ты не разработчик бота! " )
time . sleep ( 7 )
await ctx . message . delete ( )
2021-10-14 09:12:25 +02:00
2021-10-05 14:06:16 +02:00
2021-10-08 13:08:49 +02:00
@bot.command ( )
async def mute ( ctx ) :
2021-10-14 09:12:25 +02:00
await ctx . send ( file = nextcord . File ( " leopold-vd.mp4 " ) )
2021-10-19 16:27:25 +02:00
@bot.command ( ) ## Стандартное объявление комманды
async def load ( ctx , extensions ) : ## объявление функции
bot . load_extension ( f ' cogs. { extensions } ' ) ## загрузка доплонений
await ctx . send ( " loaded " )
@bot.command ( )
async def unload ( ctx , extensions ) :
bot . unload_extension ( f " cogs. { extensions } " )
await ctx . send ( ' unloaded ' )
@bot.command ( )
async def reload ( ctx , extensions ) :
bot . unload_extension ( f " cogs. { extensions } " ) # отгружаем ког
bot . load_extension ( f " cogs. { extensions } " ) # загружаем
await ctx . send ( ' reloaded ' )
for filename in os . listdir ( " ./cogs " ) : # Цикл перебирающий файлы в cogs
if filename . endswith ( " .py " ) : # если файл кончается на .py, то это наш ког
bot . load_extension ( f " cogs. { filename [ : - 3 ] } " ) #Командуем боту загрузить все расширения. Это нужно для того, чтобы вы перезапуская бота не писали команды загрузки. При наличии этого цикла бот стартует сразу с полной загрузкой когов
2021-10-08 13:08:49 +02:00
2021-10-05 14:06:16 +02:00
keep_alive ( )
2021-10-14 09:12:25 +02:00
bot . run ( os . getenv ( " DISCORD_TOKEN " ) )