Я экспериментирую/развлекаюсь с волновым роботом python apiv2.
Я сделал небольшое приложение 8ball для робота, которое отлично работает, и теперь я пытаюсь сделать приложение для викторин.
Я никогда не программировал на Python, но я уверен, что мой синтаксис правильный. Вот соответствующий код:
elif (bliptxt == "\n!strivia"):
reply = blip.reply()
if (triviaStatus != "playing"):
reply.append("Trivia Started!")
triviaStatus = "playing"
else:
reply.append("Trivia is already running!")
elif (bliptxt == "\n!etrivia"):
reply = blip.reply()
if (triviaStatus == "playing"):
reply.append("Trivia Ended!")
triviaStatus = "stopped"
else:
reply.append("Trivia is not running! To start trivia, type !strivia")
else: (snipped out)
Итак, в основном я хочу, чтобы это работало так, чтобы, когда кто-то мигает «strivia», бот распознавал, что кто-то хочет играть, поэтому сначала проверял переменную с именем triviaStatus, чтобы увидеть, играем ли мы уже, и исходил оттуда. Довольно простые вещи.
Чтобы это работало (и, на самом деле, этот код действительно предназначен для проверки этого вопроса), переменные должны быть похожи на переменные php $_SESSION, то есть он запоминает значение переменной каждый раз, когда кто-то мигает и не перезагружается каждый раз.
Тем не менее, так это или нет (если это не так, то я предполагаю, что могу сделать то же самое, сохранив настройки переменных в текстовом файле или что-то в этом роде), я сбит с толку, потому что приведенный выше код вообще не работает. То есть робот не отвечает ни на !strivia, ни на !etrivia. Если переменные не были сохранены, то робот должен просто ответить "Викторина запущена" или "Викторина не запущена!" каждый раз. Но он просто не отвечает вообще.
Если я уберу проверку на triviaStatus, робот ДЕЙСТВИТЕЛЬНО ответит. Но тогда нет никакой логики, и я не могу проверить свой вопрос.
Я также пытался создать !trivstatus, где он отвечал бы
"Trivia status is " + triviaStatus
но это ТАКЖЕ захлебнулось. Почему каждый раз, когда я хочу ИСПОЛЬЗОВАТЬ triviaStatus, бот просто умирает? Обратите внимание, что я могу установить triviaStatus в порядке (я просто не могу проверить, что выводится, отвечая на него....)
Итак, подводя итог... почему приведенный выше код не работает, но следующий код работает:
elif (bliptxt == "\n!strivia"):
reply = blip.reply()
reply.append("Trivia Started!")
trivia_status = "playing"
elif (bliptxt == "\n!etrivia"):
reply = blip.reply()
reply.append("Trivia Ended!")
trivia_status = "stopped"
Спасибо!
()
не нужны дляif/elif/
выражений. - person jfs   schedule 19.05.2010dict(strivia=self.cmd_strivia, etrivia=self.cmd_etrivia)()
, и поместил бы его вself.message_received
или что-то в этом роде. - person jfs   schedule 19.05.2010()
код не взламывать. В прошлом комментарии я предложил создать классBot
с методами cmd_strivia, cmd_etrivia, message_received.message_received()
выполняет работу операторовif/elif/else
, но делегирует фактические ответыcmd_*
методам. - person jfs   schedule 19.05.2010