Discord.py如何使其不将url和参数转换为小写,而仅使命令转换?

时间:2018-08-02 20:08:46

标签: python discord.py

我该如何仅转换命令而不转换参数或url?

因为如果我执行>play UrL,则会将网址转换为小写的>play url。我只希望它转换命令而不是url / arguments例如>say Hi:我不想将其转换为>say hi,我只想将命令:>SaY Hi转换为>say Hi

代码:

message.content = message.content.lower().replace(' ', '')
await client.process_commands(message)

整个代码

@client.event
async def on_message(message):
    author = message.author
    if message.author.nick is None:
        author = message.author.display_name
        content = message.content
        channel = message.channel
        print('{}: {}'.format(author, content))
        print('Channel: {}'.format(channel))
        print(' ')
        message.content = message.content.lower().replace(' ', ' ')
        await client.process_commands(message)
    else:
        author = message.author.nick
        content = message.content
        channel = message.channel
        print('{}: {}'.format(author, content))
        print('Channel: {}'.format(channel))
        print(' ')
        message.content = message.content.lower().replace(' ', ' ')
        await client.process_commands(message)

2 个答案:

答案 0 :(得分:0)

通常,您会看到程序具有特定的字符,该字符指示命令,例如和感叹号等。我会推荐这个。因此,您可以像这样对“ say”进行命令。

!say Hi

然后,在查看命令时,执行以下操作:

input = message.content
if input[0] == '!':
    input = input.split(' ')
    cmd = input[0].lower()[1:]
    params = input[1:]

else:
    cmd = None
    params = input

if cmd == 'say':
    content = ' '.join(params)

类似的事情,如果您有任何其他问题,请随时提出。

编辑:

因此,您需要输入一些信息,例如     “>问好” 然后变成     “>问好”

让我们这样处理:

content = message.content

if (content[0] == '>'):
    vals = content.split(' ')
    vals[0] = vals[0].lower()
    content = ' '.join(vals)

所需的值存储在变量“内容”中

答案 1 :(得分:0)

我会设置一个不想转换为小写字母的命令白名单。沿空格分割消息。然后,您可以使用嵌套的for循环对照白名单检查每个单词。如果有匹配项,请将单词转换为小写,否则保持不变。最后将单词列表合并成一个句子。

whitelist = 'say', 'play'
text = 'SaY hello'
words = text.split(' ')
for i in range(len(words)):
    for cmd in whitelist:
        if words[i].lower() == cmd:
            words[i] = words[i].lower()
finaltext = ' '.join(words)

print(text)
print(finaltext)

输出将是:

SaY hello
say hello