Почему мой бот не будет понимать параметры? - PullRequest
2 голосов
/ 19 октября 2019

У меня есть бот, который должен давать информацию об игроке в команде. Команда:

-Whois [USER]

, а затем бот отвечает информацией.

Я ввел 'iamonf1r3' в качестве пользовательского параметра и получил ответ для mip232. Вот мой код:

@client.command()
async def Whois(parameter):
    name = parameter
    if name == "mip232" or name == "Mip" or "219884374378676224":
        await client.say("Roblox Name: `mip232` \nDiscord Name: `Mip#3981` \nPin: `FS01` \nRank: `Chief Fire Officer` \nDivision: `All` \nActivity Level: `Active` \nDriving Level: `Advanced` \nDisciplinary Action: `None`")
    elif name == "iamonf1r3" or "iamonf1r3" or "335014153460776962":
        await client.say("Roblox Name: `iamonf1r3` \nDiscord Name: `iamonf1r3#7277` \nPin: `FS02` \nRank: `Deputy Chief Fire Officer` \nDivision: `All` \nActivity Level: `Active` \nDriving Level: `Advanced` \nDisciplinary Action: `None`")

1 Ответ

0 голосов
/ 19 октября 2019

Вы используете или неверным образом

Если честно, вы полностью испортили свои "или состояния" вверх

Каждый или должен иметь новое условие Право:

if name == "mip232" or name == "Mip" or "219884374378676224":

Неверно

if name == "mip232" or name == "Mip" or name == "219884374378676224":

Вы сделали то же самое со своим элифом, но я оставлю вам решение исправить это утверждение.

Объяснение: if <CONDITION> or <CONFITION>

Параметр "имя", который вы дали в первом условии, не присваивается второму или.

Кроме того, если вы спросите if name, он просто увидит,эта переменная присутствует => True, если присутствует, False, если нет.

Таким образом, ваш последний or "219884374378676224" в основном возвращает True для if, поскольку "219884374378676224" присутствует, потому что вы только что инициализировали его в том же блоке, и онэто не запрос.

Попробуйте прочитать это: https://realpython.com/python-or-operator/

...