Уф. Тут очень много проблем. В первую очередь с пониманием того, как выполняется скрипт на питоне, и областей видимости.
Для начала:
if call.data == "yes":
bot.send_message(call.message.chat.id, "Отлично")
game = True
Ты присваиваешь значение
локальной переменной game, а не
глобальной, которую ты описал выше.
Далее:
if game == True:
def play(message):
...
else:
bot.send_message(message.from_user.id, "Напиши /reg")
Ты понимаешь, что этот код объявлен вне функции? Как следствие, он выполнится один раз, при старте скрипта. У тебя game в этот момент не будет равно True, и функция play() не будет определена.
Боты - это не простая тема, а боты с автоматами состояний - тем более. Поучи Питон сначала, кроме шуток.