import discord
from discord.ext import tasks
import sqlite3
import re
from datetime import datetime
# =======================================
# FIRST LOAD
#========================================
client = discord.Client()
TOKEN = "Секрет"
IdChannel = секрет
prefix = "b"
# Создать таблицу
db = sqlite3.connect('Clan.db')
sql = db.cursor()
sql.execute("""CREATE TABLE IF NOT EXISTS tboss (
nameboss TEXT,
death TEXT,
fresp TEXT,
resp TEXT,
respawn TEXT,
regmemb TEXT,
timedata TEXT
)""")
db.commit()
current_datetime = datetime.now()
print(datetime.now())
print(current_datetime.hour)
print(current_datetime.minute)
# =======================================
# RAID BOSS
# =======================================
@tasks.loop(minutes=1)
# Проверка базы и оповещение (не доделал)
async def my_background_task():
channel = client.get_channel(IdChannel)
await channel.send('TEST!')
@my_background_task.before_loop
async def my_background_task_before_loop():
await client.wait_until_ready()
@client.event
async def on_message(message):
if message.author == client.user:
return
# Обработка сообщения
if message.content.startswith(message.content):
num = [i for i in re.findall('\d+', message.content)]
stri = [i for i in re.findall('\D+', message.content)]
print(message.content)
print(num)
print(stri)
mc = message.content
nameboss = stri[0] # Имя босса
death = num[0] + ":" + num[1] # Смерть босса
fresp = num[2] + ":" + num[3] # Первый респ босса
resp = num[4] + ":" + num[5] # Интервал респа
respawn = num[6] + ":" + num[7] # Время Респа
regmemb = message.author.name # Защита от шутников
timedata = datetime.now() # Дата заполнения
if mc.lower() == "помощь" or mc.lower() == "help":
await message.channel.send('инфо, info - получить информацию по боссам'
'фьюз, fuze - фюзить или не фюзить')
if mc.lower() == "фьюз" or mc.lower() == "fuze":
await message.channel.send('Синтезируй 100%')
elif mc.lower() == "инфо" or mc.lower() == "info":
# Инфо о боссе
for value in sql.execute("SELECT * FROM tboss"):
print(value)
await message.channel.send("Информация: " + value)
else:
if not num:
await message.channel.send('Ошибка ввода! Вы не ввели Целочисленное данные!')
if len(num) != 8:
await message.channel.send('Ошибка ввода! Введены не все данные!')
# Обновление босса
if len(num) == 2 and len(stri) >= 1:
sql.execute(f"UPDATE tboss SET death = '{death}' WHERE nameboss = '{nameboss}'")
await message.channel.send("Время босса **"+stri[0]+"**скорректировано до:"+num[0]+":"+num[1])
# Новый босс в системе
elif len(num) == 8 and len(stri) >= 1:
await message.channel.send('По логике внесено')
print('Имя Боса: '+nameboss +
" Время смерти: " +death +
" Первый респ"+fresp +
" Интервал респа"+resp +
" Время респа"+respawn +
" Последний редактор: "+regmemb +
" Дата последнего заполнения "+timedata)
"""ТАБЛИЦА ДОБАВЛЕНИЯ НОВОГО БОССА"""
mas = (nameboss, death, fresp, resp, respawn, regmemb, timedata)
await message.channel.send('По логике внесено')
# Новая запись
sql.execute(f"SELECT nameboss FROM tboss WHERE nameboss = '{nameboss}'")
if sql.fetchone() is None:
sql.execute(f"INSERT INTO tboss VALUES (?, ?, ?, ?, ?, ?, ?)", (nameboss, death, fresp,
resp, respawn, regmemb, timedata))
print("Зарегистрировано")
else:
print("Запись уже есть")
for value in sql.execute("SELECT * FROM tboss"):
print(value)
db.commit()
await message.channel.send('Данные учтены!')
num.clear()
stri.clear()
my_background_task.start()
client.run(TOKEN)