首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >on_voice_state事件问题

on_voice_state事件问题
EN

Stack Overflow用户
提问于 2020-10-11 22:07:53
回答 1查看 51关注 0票数 0

我希望机器人在有人加入语音通道时创建一个文本通道。

代码语言:javascript
复制
@client.event
async def on_voice_state_update(ctx, member: discord.Member, before, after):
    channelid = after.channel.id
    print(f'{member.name} заходит в голосовой канал с ID = {channelid}...')
    if channelid == 764768330212048941:
        print(f'{member.name} зашел в "Стрим 1"(ID: {channelid})')
        print(f'Создаю текстовый канал с именем: "Стрим 1|{member.name}"')
        await ctx.create_text_channel(name=f'Стрим 1|{member.name}')
    else:
        if channelid == 764843714417655808:
            print(f'{member.name} зашел в "Стрим 2"(ID: {channelid})')

当我加入vc时,我得到了这样的信息:

代码语言:javascript
复制
TypeError: on_voice_state_update() missing 1 required positional argument: 'after'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-11 22:13:49

您不能在事件中使用ctx参数,也不必执行member: discord.Member,因为它已经赋值。如果你想创建频道,你可以使用Guild.create_text_channel。为此,您需要使用discord.utils.get获取guild对象。下面是一个示例:

代码语言:javascript
复制
@client.event
async def on_voice_state_update(member, before, after):
    channelid = after.channel.id
    print(f'{member.name} заходит в голосовой канал с ID = {channelid}...')
    if channelid == 764768330212048941:
        print(f'{member.name} зашел в "Стрим 1"(ID: {channelid})')
        print(f'Создаю текстовый канал с именем: "Стрим 1|{member.name}"')
        guild = discord.utils.get(client.guilds, id=your guild id)
        await guild.create_text_channel(name=f'Стрим 1|{member.name}')
    else:
        if channelid == 764843714417655808:
            print(f'{member.name} зашел в "Стрим 2"(ID: {channelid})')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64304922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档