如何修复基于discord.py的Discord机器人发送多随机词汇消息时的语法报错
问题核心定位
你遇到的报错根本不是代码块里的列表、判断逻辑的语法问题,核心是discord.py的message.channel.send()传参逻辑用错了:
- 这个方法的第一个位置参数只认单个要发出去的字符串内容,不支持把多段内容当做好几个独立位置参数直接塞进去
- 你现在写的那句
await message.channel.send((random.choice(variable1)),(random.choice(variable2))),会让第二个random.choice的返回值被方法当成tts开关这类可选配置参数来解析,完全达不到你要把两个随机词拼起来发送的预期,自然会抛参数不匹配的错。
具体修复操作
- 先检查文件最开头有没有导入
random库,缺了这行就算逻辑写对了,一跑就会报找不到random的错:import random - 把原来的发送逻辑改掉就行:先把两个随机选出来的词拼成单个字符串,再传给
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
相关产品推荐
相关产品推荐

