7 Commits
v2.0 ... v2.3

Author SHA1 Message Date
c1ee1b50ab Added config check and updated version to 2.3 2023-05-07 16:39:48 +02:00
7a379cf97e Updated ignore 2023-05-07 16:38:46 +02:00
388e27fdff config.json is now config_example.json 2023-05-07 16:38:17 +02:00
65a0e1097e Updated version to 2.2 2023-05-07 16:24:09 +02:00
3fe67e18b0 Channel will terminate when the last user quit 2023-05-07 16:23:16 +02:00
91eecb4b0b Fixed channels logic 2023-05-02 16:13:11 +02:00
740c6a1464 Updated version to 2.1 2023-05-02 16:10:32 +02:00
6 changed files with 56 additions and 33 deletions

9
.gitignore vendored
View File

@@ -163,4 +163,11 @@ cython_debug/
.history/ .history/
# Built Visual Studio Code Extensions # Built Visual Studio Code Extensions
*.vsix *.vsix
# Project
venv
venv_linux
venv_windows
config.json

View File

@@ -26,8 +26,9 @@ Installation instructions are listed below. Please, make sure you have installed
1. `git clone https://git.end-play.xyz/profitroll/YusarinBot` 1. `git clone https://git.end-play.xyz/profitroll/YusarinBot`
2. `cd YusarinBot` 2. `cd YusarinBot`
3. `pip install -r requirements.txt` 3. `pip install -r requirements.txt`
4. `nano config.json` 4. `cp config_example.json config.json`
5. `python yusarin.py` 5. `nano config.json`
6. `python yusarin.py`
## Installation (Detailed) ## Installation (Detailed)
@@ -42,9 +43,10 @@ Installation instructions are listed below. Please, make sure you have installed
9. You can rename it however you want, set needed descriptions etc 9. You can rename it however you want, set needed descriptions etc
10. Go to "Bot" tab and enable application as bot 10. Go to "Bot" tab and enable application as bot
11. Copy token of your bot 11. Copy token of your bot
12. Open file `config.json` with your favorite text editor and paste your token as value of "bot_token" key 12. Copy `config_example.json` to `config.json`
13. Copy your own Discord ID and paste it as value of "owner" key (How to get ID: <https://support.playhive.com/discord-user-id/>) 13. Open file `config.json` with your favorite text editor and paste your token as value of "bot_token" key
14. Bot is ready! Run it using `python yusarin.py` 14. Copy your own Discord ID and paste it as value of "owner" key (How to get ID: <https://support.playhive.com/discord-user-id/>)
15. Bot is ready! Run it using `python yusarin.py`
## Config explanation ## Config explanation

View File

@@ -9,6 +9,7 @@ from discord import (
utils, utils,
) )
from discord.ext import commands from discord.ext import commands
from discord.abc import GuildChannel
from functions import ( from functions import (
appendLog, appendLog,
@@ -32,6 +33,11 @@ class CogChannel(commands.Cog):
def __init__(self, client): def __init__(self, client):
self.client = client self.client = client
@commands.Cog.listener()
async def on_guild_channel_delete(self, channel: GuildChannel):
if isUserVoice(channel):
await removeUserVoice(channel)
@Cog.listener() @Cog.listener()
async def on_voice_state_update( async def on_voice_state_update(
self, member: Member, before: VoiceState, after: VoiceState self, member: Member, before: VoiceState, after: VoiceState
@@ -40,26 +46,19 @@ class CogChannel(commands.Cog):
vc_from = before.channel vc_from = before.channel
vc_to = after.channel vc_to = after.channel
category = member.guild.get_channel(guildConfGet(member.guild, "category"))
# If user left vc # If user left vc
if after.channel is None and before.channel.category == category and len(before.channel.members) == 0: if before.channel is not None and len(before.channel.members) == 0:
if isUserVoice(vc_from): if isUserVoice(vc_from):
if isVoiceOfUser(vc_from, member): if not isVoiceOfUser(vc_from, member):
await removeUserVoice(vc_from)
return
else:
if loadJson("config.json")["enable_nomic"]: if loadJson("config.json")["enable_nomic"]:
await changeNomicPerms("deny", vc_from, member) await changeNomicPerms("deny", vc_from, member)
await removeUserVoice(vc_from)
# If user joined vc # If user joined vc
if after.channel is not None and after.channel.id == guildConfGet(member.guild, "channel"): if after.channel is not None and after.channel.id == guildConfGet(
if isUserVoice(vc_from): member.guild, "channel"
if isVoiceOfUser(vc_from, member): ):
await removeUserVoice(vc_from)
else:
if loadJson("config.json")["enable_nomic"]:
await changeNomicPerms("deny", vc_from, member)
if isUserVoice(vc_to): if isUserVoice(vc_to):
if loadJson("config.json")["enable_nomic"]: if loadJson("config.json")["enable_nomic"]:
await changeNomicPerms("allow", vc_to, member) await changeNomicPerms("allow", vc_to, member)

View File

@@ -253,31 +253,45 @@ async def removeUserVoice(vc: VoiceChannel) -> None:
nomic_channel = utils.get(vc.guild.channels, id=vc_conf["nomic"]) nomic_channel = utils.get(vc.guild.channels, id=vc_conf["nomic"])
remove(vc_file) remove(vc_file)
await needed_channel.delete() if needed_channel is None:
if debug:
appendLog(
f"Removed voice channel '{needed_channel}' ({str(needed_channel.id)}) of user with id {str(vc_conf['ownerid'])}",
guild=vc.guild,
)
else:
appendLog( appendLog(
f"Removed voice channel '{needed_channel}' of user with id {str(vc_conf['ownerid'])}", f"Removed voice channel '{needed_channel}' of user with id {str(vc_conf['ownerid'])}",
guild=vc.guild, guild=vc.guild,
) )
else:
await needed_channel.delete()
if loadJson("config.json")["enable_nomic"]:
await nomic_channel.delete()
if debug: if debug:
appendLog( appendLog(
f"Removed nomic channel {nomic_channel} ({str(nomic_channel.id)}) of channel with id {str(needed_channel.id)}", f"Removed voice channel '{needed_channel}' ({str(needed_channel.id)}) of user with id {str(vc_conf['ownerid'])}",
guild=vc.guild, guild=vc.guild,
) )
else: else:
appendLog(
f"Removed voice channel '{needed_channel}' of user with id {str(vc_conf['ownerid'])}",
guild=vc.guild,
)
if loadJson("config.json")["enable_nomic"]:
if nomic_channel is None:
appendLog( appendLog(
f"Removed nomic channel '{nomic_channel}' of channel with id {str(needed_channel.id)}", f"Removed nomic channel '{nomic_channel}' of channel with id {str(needed_channel.id)}",
guild=vc.guild, guild=vc.guild,
) )
else:
await nomic_channel.delete()
if debug:
appendLog(
f"Removed nomic channel '{nomic_channel}' ({str(nomic_channel.id)}) of channel with id {str(needed_channel.id)}",
guild=vc.guild,
)
else:
appendLog(
f"Removed nomic channel '{nomic_channel}' of channel with id {str(needed_channel.id)}",
guild=vc.guild,
)
else: else:
return return

View File

@@ -7,15 +7,16 @@ except Exception as exp:
) )
exit() exit()
from os import getpid from os import getpid, path
from functions import * from functions import *
pid = getpid() pid = getpid()
version = 2.0 version = 2.3
if ( if (
loadJson("config.json")["owner"] == "SET-OWNER-ID" not path.exists("config.json")
or loadJson("config.json")["owner"] == "SET-OWNER-ID"
or loadJson("config.json")["bot_token"] == "SET-BOT-TOKEN" or loadJson("config.json")["bot_token"] == "SET-BOT-TOKEN"
): ):
print( print(