Как реализовать переход бота между голосовыми каналами с отправкой сообщений?
Я хочу написать бота, который в рандомное время присылает сообщение и в нем отмечает пользователя, так вот можно ли сделать так, чтоб он отмечал тех людей, который сидят в любом голосовом канале сервера. А это мой код на данный момент:
@bot.command()
async def random(ctx):
await ctx.message.delete()
users = ctx.guild.members
user1 = choice(users)
await ctx.send(f"? {user1}")
Как я думаю, нужно сделать через tasks.loop, но еще не понимаю как.
Ответы (1 шт):
Автор решения: Саша Спиблберг
→ Ссылка
Я решил, вот код.
@bot.command()
async def join(ctx):
if ctx.author.voice is None:
await ctx.send("Вы не находитесь в голосовом канале.")
return
voice_channel = ctx.author.voice.channel
if ctx.voice_client is None:
await voice_channel.connect()
await ctx.send(f"Я присоединился к голосовому каналу: {voice_channel.name}")
else:
await ctx.voice_client.move_to(voice_channel)
await ctx.send(f"{bot.user.name} полетел в : {voice_channel.name}")
@bot.command()
async def leave(ctx):
voice_client = ctx.guild.voice_client
if voice_client is None:
await ctx.send("Я не нахожусь в голосовом канале.")
return
await voice_client.disconnect()
await ctx.send("Я покинул голосовой канал.")
@bot.event
async def on_voice_state_update(member, before, after):
if member == bot.user and before.channel != after.channel:
await bot.get_channel(after.channel.id).send(f"Я сменил голосовой канал на {after.channel.name}")