当前位置: 首页 > 知识库问答 >
问题:

不一致py获取一个bot以基于csv文件添加角色

艾弘义
2023-03-14

所以我是Python新手,Discord。一般来说,这是一个很好的学习机会。所以请原谅我的文盲。

我在互联网上到处组装了一个机器人,它按预期工作。但是当我试图添加一个特定的功能时,我现在被难住了。

在上下文中,我管理的Discord服务器是一个视频游戏发布服务器,所以我们使用它进行测试和反馈收集。对于即将到来的beta测试,我们希望自动将“beta测试”角色添加到用户列表(一个.csv文件),这将使他们能够访问特定的频道和命令。

问题在于文件读取部分。我可以通过打开服务器获取机器人。csv文件,并将其内容打印或发送到特定频道,但它无法将任何打印的名称识别为服务器成员。

首先,这是代码:

discord.Intents.default()


@bot.command(name='addrole', hidden=True)
@has_permissions(administrator=True)
async def add_beta_role(ctx, role='beta-test'):
    with open('./beta_list.csv', 'r+') as beta_role_file:
        for item in beta_role_file:
            print(f'{item}')

            guild = discord.utils.find(lambda g : g.id == ctx.guild, bot.guilds)
            member = discord.utils.find(lambda m : m.id == item, ctx.guild.members)

            if role is not None:
                if member is not None:
                    await member.add_roles()
                    print(f'{role} added to {member}')
                
                else:
                    print(f'Member not found.')
            else:
                print(f'Role not found.')

这个我使用的csv文件包含4行,用于4个不同的用户,具有不同格式的名称:

  1. 不和谐名称鉴别器(例如:用户#123,服务器中的真实用户)
  2. 不和谐名称(例如:用户,服务器中的真实用户名)
  3. 非现有用户(以确保机器人拾取异常
  4. 不和谐ID(例如:123456789,服务器中的真实用户ID)

我得到的结果是:

User1
Member not found.

User2
Member not found.

User3
Member not found.

User4
Member not found.

我希望bot能够根据中的用户列表找到服务器成员。csv文件,但它不工作。我试图修改代码,以便bot首先将列表发送到Discord频道,然后使用消息内容查找Discord成员,但我没有更好的运气。

如果有人能指出如何做到这一点或问题所在,我将不胜感激

编辑:为清晰起见进行编辑

共有1个答案

夹谷沛
2023-03-14

您不能只是迭代csv文件来获取项目。Python有一个很好的内置csv库来实现这一点。

import csv
with open('./beta_list.csv', 'r+') as beta_role_file:
    reader = csv.reader(beta_role_file)
    for row in reader:
        print(row)

使用csv文件调整此代码

 类似资料:
  • 我想发送消息,如果作者有角色,但如果我尝试此代码不工作(角色的id是正确的)。

  • 免责声明:我已经转发了这个问题,并删除了最初的问题,因为一个人给出了一个愚蠢的答案,降低了这个问题的可见性。 基本上,我正在将我的机器人迁移到discord.py的重写版本。 我正在测试机器人与前一个只有几个功能,现在我测试音频功能与on_voice_state_update()事件,机器人应该播放音频时,有人加入一个频道。 我写了这样的事件: 这段代码的作用是,检查用户是否加入了语音频道,加入了

  • 我在我的discord机器人上遇到了一个问题。命令不起作用。我认为代码不是问题。除了命令外,一切都很完美。不和谐,如果我使用!在这里测试mytext,什么都不会发生。 提前谢谢你!

  • 如果我执行类似于它工作正常。 但是,我找不到一种方法使其适用于ping。我尝试了机器人ID和名称。我的机器人ID代码: 有人能帮忙吗?

  • 我的目标是创建一个discord bot,该bot使用用户发送的相同消息进行响应,如果用户发送文件,则bot将发送该文件的链接。 我可以让两个部分分开工作,但在一起我只是遇到了问题(见底部),在我目前的代码中只有独立文件发送工作,文本消息没有,如果你有文本文件,文件链接将由机器人发送但是文本不会。如果我把第二部分放在上面,那么我得到的基本上是完全相反的,只有文本被发送,没有文件。 我的代码: 底部

  • 我是新来的python和创建不和谐的机器人在一般情况下,我不能为我的生命弄清楚如何让我的机器人分配一个角色给用户的用户请求。 我在互联网上搜索了几个小时,找到了一些例子,但它们都产生了错误。 以下是我的命令代码: 以下是我得到的错误: