Files
krekbot-support/CoreSub.py

174 lines
8.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import disnake
from disnake.ext import commands
import asyncio
import datetime
import sys
from data.secrets.TOKEN import token
class Bot(commands.Bot):
def __init__(self):
super().__init__(
command_prefix="=",
intents=disnake.Intents.all()
)
self.shutdown_flag = asyncio.Event()
async def on_ready(self):
self.krekchat = await self.fetch_guild(490445877903622144)
print(self.krekchat.name)
await self.change_presence(status=disnake.Status.online, activity=disnake.Game("Работаю"))
print(f"{datetime.datetime.now().strftime('%H:%M:%S %d-%m-%Y')}:: KrekSupportBot activated")
await self.send_navigation()
self.shutdown_flag.set()
class embed(disnake.Embed):
def __init__(self, **kwargs):
color = kwargs.pop('color', 0xA687CB)
super().__init__(color = color, **kwargs)
async def send_navigation(self):
navigation_channel = await self.krekchat.fetch_channel(1399856075519561839)
embeds = [
self.embed(
description = """
# 🔥Добро пожаловать на турнир Ruin Ship!
## Начало запланировано на <t:1755248400:D>, так что наберитесь терпения и подождите ещё немного
"""
),
self.embed(
description = """
## 📋Общая информация о турнире Ruin ~~Our~~ Ship
**Полную информацию о турнире, гайды и правила можно посмотреть на [этом сайте 🔗](Будет доступно с 15 августа!)**
Участникам предстоит 30 дней выживать, убегая от роя механоидов на заранее подготовленном сценарии.
<a:KrekTurtleSpin:1246089365483163702> Ваш актив побуждает нас и дальше проводить такие уникальные события, так что надеемся на ваши положительные отзывы и поддержку! И помните, главное не результат, а попытка спасти свой корабль!
-# Организаторы: стример Krekeros и команда discord сервера KreK4at
"""
),
self.embed(
description = """
## <a:NERDGE:1246089390611107986> Особенности турнира
- Уже второй глобальный турнир по RimWorld от нашей команды!
- Призовой фонд 50 000 рублей (на первые 3 призовых места)
- Уникальный сценарий для быстрых путешествий!
- Сборка QoL модов, которые помогут вам в прохождении!
- Специально разработанная система оценивания участников
- Опыт путешествия без использования караванов (только капсулами, шаттлами и гравикораблём)
"""
),
self.embed(
description = """
## <:A_pepe_write:875461953819127869> Условия участия в турнире
Перед началом убедитесь, что:
- У вас стоит актуальная версия игры 1.6
- Имеются 4 дополнения: Royality, Ideology, Biotech и Odyssey (все кроме Anomaly)
- Установлена турнирная сборка и выставлен наш порядок модов
- Вы ознакомлены и согласны с правилами проведения турнира
Ваш старт:
- Сценарий - 'Турнир RuinShip'
- Рассказчик: `Кассандра Классическая`
- Сложность: `Проигрывать - Весело`
- Установлен `Ответственный режим`
- Ксенотип: `любой ванильный кроме гемофага`
- Идеология: `любая устоявшаяся`
- Размер карты `30%`
**Все остальные параметры генерации(в том числе сид) не трогать!**
"""
),
self.embed(
description = """
## <:A_u_thonk:493332460923518996> Как участвовать?
- Весь процесс прохождения должен проходить в прямом эфире на [Twitch](https://www.twitch.tv/) или [YouTube](https://www.youtube.com/) (а лучше и там, и там) с тегами #RuinShip #RuinShip_Tournament
- Можете пригласить всех желающих на свой стрим в канале <#1399878029324324874>
- В конце и начале следующего стрима (если проходите в несколько подходов) нужно целиком показать базу, гравикорабль и статистику колонии
- После окончания турнира достаточно только заполнить [форму](https://forms.gle/CNbLLf1JF3rd5iL47)
- Свой результат вы сможете увидеть в [общей таблице участников](https://docs.google.com/spreadsheets/d/1QkaNYezumeb-QJHSZ3x1vIi5ktf0ooDklYkrP6xSMZc/edit?usp=sharing), а если вы попали в топ-20, то сможете увидеть свой результат в <#1396785366882582538>
"""
),
self.embed(
description = """
## 📆Крайние сроки подачи заявок
Заявки на участие в турнире принимаются до `31 августа 2025 г`. После окончания приёма заявок в течение суток мы перепроверим победителей и озвучим результат турнира.
-# Просьба отправлять заявки заранее, чтобы у нас было время пересчитать баллы у тех, кто ошибся в подсчете.
"""
),
self.embed(
description = """
## [🗃️ Нужные файлы 🔗](https://drive.google.com/drive/folders/1Cj3r3xmrhbSOarYRJnZ1-Cl9CGJHXKp_)
## Дополнительная информация
### Моды распаковать в папку mods в корневой папке игры!
```C:\\Program Files (x86)\\Steam\\steamapps\\common\\RimWorld\\Mods```
### Быстрее всего в папку с другими файлами можно попасть через 'Открыть сохранения' в настройках Rimworld, либо ввести в поиск на пк `%Appdata%`
**ModsConfig.xml (порядок модов) поместить по этому пути**
```%userprofile%\\AppData\\LocalLow\\Ludeon Studios\\RimWorld by Ludeon Studios\\Config```
**Файл RuinShipScenaruio.rsc (Сценарий турнира) поместить по этому пути**
```%userprofile%\\AppData\\LocalLow\\Ludeon Studios\\RimWorld by Ludeon Studios\\Scenarios```
"""
),
self.embed(
description = """
## <:A_anime_u_cut:910548853802029076> Пожелания напоследок
Удачи в вашем прохождении и помните, что самое главное - это путь (даже если без караванов), так что попробуйте не заруинить свой корабль и победить мехрой за эти 30 дней и у вас обязательно всё получится!(или нет<a:AnimatedA_PeepoNoob:982560159974965308>) Мы верим в вас и в вашу победную! Точно так же, как стример верит в свою!<a:AnimatedA_ThisIsFine:982563794133852220>
"""
),
self.embed(
description = """
## P.S.
По любым вопросам можете обращаться к людям с ролью <@&1241274685459529789>, а можете просто пингануть эту роль в канале <#508324056114659330>.
"""
),
]
if False:
test_channel = await self.krekchat.fetch_channel(1382446742087270562)
for embed in embeds:
if isinstance(embed, list):
await test_channel.send("", embeds=embed)
else:
await test_channel.send("", embed=embed)
#return
await navigation_channel.purge(limit=len(embeds)+1)
#await navigation_channel.send("", embeds=embeds)
webhooks = await navigation_channel.webhooks()
webhook = webhooks[0]
for embed in embeds:
if isinstance(embed, list):
await webhook.send("", embeds=embed, username="Ruin Ship")
else:
await webhook.send("", embed=embed, username="Ruin Ship")
async def main():
bot = Bot()
try:
bot_task = asyncio.create_task(bot.start(token))
await bot.shutdown_flag.wait()
if not bot.is_closed():
await bot.close()
await bot_task
except KeyboardInterrupt:
if not bot.is_closed():
await bot.close()
finally:
print("Программа завершена")
if __name__ == "__main__":
try:
asyncio.run(main())
except KeyboardInterrupt:
pass