使用 Python 在 400 空消息代码中打印变量输出
Print a variable output in a 400 empty message code using Python
问题:
我正在尝试为 Discord 编写一个机器人,以便获取一个变量并将其作为消息发送。例如,"a" 设置为 42,我希望机器人在聊天中打印 "The number is 42 {author name}":
a = 32
if message.content.startswith('!gap'):
msg = print('a'.format(message))
await client.send_message(message.channel, msg)
错误:
Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\trevo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\client.py", line 307, in _run_event
yield from getattr(self, event)(*args, **kwargs)
File "C:\Users\trevo\Desktop\dcbot\reply.py", line 16, in on_message
await client.send_message(message.channel, msg)
File "C:\Users\trevo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\client.py", line 1152, in send_message
data = yield from self.http.send_message(channel_id, content, guild_id=guild_id, tts=tts, embed=embed)
File "C:\Users\trevo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\http.py", line 200, in request
raise HTTPException(r, data)
discord.errors.HTTPException: BAD REQUEST (status code: 400): Cannot send an empty message
感谢解释!
您希望 msg
是一个字符串,但如果您尝试这样做:
>>> msg = print("anything at all")
>>> repr(msg)
None
只需删除 print
调用即可。
您不应该使用 on_message 事件来发出命令。改用内置命令处理程序,这有助于更好的程序设计和效率。
下面的代码输出你在!gap
之后输入的数字
from discord.ext import commands
client = commands.Bot(command_prefix='!')
@client.command(pass_context=True)
async def gap(ctx, number):
await client.say(f"{ctx.author.mention} said the number {number}")
client.run("token")
我还建议查看 API 的重写分支,它有很多改进。
问题:
我正在尝试为 Discord 编写一个机器人,以便获取一个变量并将其作为消息发送。例如,"a" 设置为 42,我希望机器人在聊天中打印 "The number is 42 {author name}":
a = 32
if message.content.startswith('!gap'):
msg = print('a'.format(message))
await client.send_message(message.channel, msg)
错误:
Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\trevo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\client.py", line 307, in _run_event
yield from getattr(self, event)(*args, **kwargs)
File "C:\Users\trevo\Desktop\dcbot\reply.py", line 16, in on_message
await client.send_message(message.channel, msg)
File "C:\Users\trevo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\client.py", line 1152, in send_message
data = yield from self.http.send_message(channel_id, content, guild_id=guild_id, tts=tts, embed=embed)
File "C:\Users\trevo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\http.py", line 200, in request
raise HTTPException(r, data)
discord.errors.HTTPException: BAD REQUEST (status code: 400): Cannot send an empty message
感谢解释!
您希望 msg
是一个字符串,但如果您尝试这样做:
>>> msg = print("anything at all")
>>> repr(msg)
None
只需删除 print
调用即可。
您不应该使用 on_message 事件来发出命令。改用内置命令处理程序,这有助于更好的程序设计和效率。
下面的代码输出你在!gap
之后输入的数字from discord.ext import commands
client = commands.Bot(command_prefix='!')
@client.command(pass_context=True)
async def gap(ctx, number):
await client.say(f"{ctx.author.mention} said the number {number}")
client.run("token")
我还建议查看 API 的重写分支,它有很多改进。