You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复基于discord.py的Discord机器人发送多随机词汇消息时的语法报错

问题核心定位

你遇到的报错根本不是代码块里的列表、判断逻辑的语法问题,核心是discord.py的message.channel.send()传参逻辑用错了:

  • 这个方法的第一个位置参数只认单个要发出去的字符串内容,不支持把多段内容当做好几个独立位置参数直接塞进去
  • 你现在写的那句await message.channel.send((random.choice(variable1)),(random.choice(variable2))),会让第二个random.choice的返回值被方法当成tts开关这类可选配置参数来解析,完全达不到你要把两个随机词拼起来发送的预期,自然会抛参数不匹配的错。
具体修复操作
  1. 先检查文件最开头有没有导入random库,缺了这行就算逻辑写对了,一跑就会报找不到random的错:
    import random
    
  2. 把原来的发送逻辑改掉就行:先把两个随机选出来的词拼成单个字符串,再传给send()方法,改完的完整代码片段如下:
    @client.event
    async def on_message(message):
        if message.author == client.user:
            return
    
        if message.content.startswith('f!generate'):
            variable1 = [
                'test',
                'test2',
                'test3',
            ]
            variable2 = [
                'test',
                'test2',
                'test3',
            ]
            # 自己调整两个词之间的分隔符就行,空格、标点、换行都可以
            send_content = f"{random.choice(variable1)} {random.choice(variable2)}"
            await message.channel.send(send_content)
    

顺带提一句:你之前写的列表最后一个元素后面带个逗号的写法是Python完全支持的合法语法,根本不是报错来源,不用特意删掉。


内容的提问来源于stack exchange,提问作者Wendro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 14:15:03