Python 发送到通道时接受参数

Python 发送到通道时接受参数,python,discord,discord.py,Python,Discord,Discord.py,我正在尝试创建一个discord机器人,它接受两个参数,将它们格式化为文本,然后发送到一个频道。使用此代码它可以工作,但不发送自定义内容。只能预先定义,我将如何执行此操作 if message.content == '!settrend': async def args(arg1, arg2): output = '' output += f"Changed trend of {arg1} to {arg2}"

我正在尝试创建一个discord机器人,它接受两个参数,将它们格式化为文本,然后发送到一个频道。使用此代码它可以工作,但不发送自定义内容。只能预先定义,我将如何执行此操作

    if message.content == '!settrend':
    async def args(arg1, arg2):
        output = ''
        output += f"Changed trend of {arg1} to {arg2}"
        await message.channel.send(output)

    await args("test", "test") # I want this to be able to have custom arguments by the command.

而不是检查
message.content=='!settrend'
,您需要先将
消息内容按空格拆分,然后检查您获得的第一个令牌是否为
!设置趋势“

因此,将第一行替换为:

arguments = message.content.split()
if arguments[0] == '!settrend':
然后,最后:

await args(arguments[1], arguments[2])
请注意,此解决方案要求这两个参数不包含空格。如果希望能够使用引号指定间隔参数(例如:
!settrend“第一个参数”“第二个参数”
),请使用
shlex.split
而不是标准的字符串拆分方法:

import shlex
arguments = shlex.split(message.content)

而不是检查
message.content=='!settrend'
,您需要先将
消息内容按空格拆分,然后检查您获得的第一个令牌是否为
!设置趋势“

因此,将第一行替换为:

arguments = message.content.split()
if arguments[0] == '!settrend':
然后,最后:

await args(arguments[1], arguments[2])
请注意,此解决方案要求这两个参数不包含空格。如果希望能够使用引号指定间隔参数(例如:
!settrend“第一个参数”“第二个参数”
),请使用
shlex.split
而不是标准的字符串拆分方法:

import shlex
arguments = shlex.split(message.content)