Update bot.py

- Add move bot event
This commit is contained in:
trueold89 2024-06-03 18:00:23 +03:00
parent 1199c74aa7
commit e6c44193f8
Signed by: trueold89
GPG Key ID: C122E85DD49E6B30
1 changed files with 35 additions and 1 deletions

View File

@ -2,7 +2,7 @@
from hellmbot.env import ENV from hellmbot.env import ENV
from hellmbot.db import ServersDB from hellmbot.db import ServersDB
from discord import Intents from discord import Intents, Member, VoiceState
from discord.ext import commands from discord.ext import commands
@ -50,5 +50,39 @@ async def create(ctx: commands.Context) -> None:
db.add_channel(vc.id, circle + 1) db.add_channel(vc.id, circle + 1)
user_before_channels = {}
@bot.event
async def on_voice_state_update(member: Member, before: VoiceState, after: VoiceState):
"""
Moves the user through the group channels if the user has been connected to one of them
:param member: Discord member class objet
:param before: Before state of voice channel
:param after: After state of voice channel
"""
server = member.guild.id
if before.channel != after.channel:
db = ServersDB(server)
channels = db.channels
if after.channel and after.channel.id in channels:
if member.id not in tuple(user_before_channels.keys()):
user_before_channels[member.id] = None
if before.channel is not None:
user_before_channels[member.id] = before.channel.id
current_idx = channels.index(after.channel.id)
if current_idx + 1 != len(channels):
next_channel = bot.get_channel(channels[current_idx + 1])
else:
next_id = user_before_channels[member.id]
del user_before_channels[member.id]
if next_id is None:
next_channel = next_id
else:
next_channel = bot.get_channel(next_id)
await member.move_to(next_channel)
if __name__ == "__main__": if __name__ == "__main__":
start() start()