Помогите с discord.py
Пытаюсь создать голосовой канал через discord бота на python. Испоьзую create_voice_channel, но постоянно выводятся ошибки что ничего такого нету. Пробовал и через bot.create_voice_channel, и использовал класс. Уже замучался, как можно создать голосовой канал. Я новичок, так что не судите строго. Обновлено: надо создавать канал не через команду в чате а через событие on_voice_state_update, а там насколько я знаю нельзя передать аргумент ctx.
import discord
from discord.ext import commands
import config
bot = commands.Bot(command_prefix='!')
@bot.event
async def on_voice_state_update(member, before, after):
#если пользователь зашёл в нужный канал
if after.channel.id == 709163351820861450:
await creat_voice_channel('test')
bot.run(config.TOKEN)
Ответы (1 шт):
Автор решения: Евгений
→ Ссылка
import discord
from discord.ext import commands
TOKEN = 'YOUR_BOT_TOKEN'
PREFIX = '!'
bot = commands.Bot(command_prefix=PREFIX)
@bot.command(pass_context=True)
async def new_voice(ctx, name):
await ctx.guild.create_voice_channel(name)
# отчёт об успешном создании канала. Можно убрать, если отчёт в чате не нужен
await ctx.send(f'Канал {name} успешно создан.')
bot.run(TOKEN)
Upd
Если вы используете on_voice_update, вы из параметра member можете достать guild, поскольку member - профиль пользователя на конкретном сервере, а не в дискорде вообще
import discord
from discord.ext import commands
from random import randint
TOKEN = 'YOUR_BOT_TOKEN'
PREFIX = '!'
bot = commands.Bot(command_prefix=PREFIX)
@bot.event
async def on_voice_state_update(member, before, after):
# генерация псевдослучайного имени канала
name = chr(randint(65, 123))
while randint(0, 15):
name += chr(randint(65, 123))
# Создаём канал с этим именем. Отчёт отправляем пользователю в лс
await member.guild.create_voice_channel(name) # нужная вам строка
await member.send(f'Вы изменили состояние голосового канала. Это привело к созданию канала {name}')
bot.run(TOKEN)



