Здравствуйте !
Я пишу бота в telebot, который будет играть со мной в морской бой. Код еще, разумеется неготовый, но он почему-то вообще не работает. Бот ничего не выдает даже на команду
/start
Отмечу, что прежде чем писать код бота, я написал алгоритм расстановки кораблей на поле бота и поместил его в файл bot_field.py. Там ошибки 100% нет.
Вот код:
import telebot
import random
from bot_field import bot_ships
dicty = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И']
user_field = ['А1', 'А2', 'А3', 'А4', 'А5', 'А6', 'А7', 'А8', 'А9', 'Б1', 'Б2', 'Б3', 'Б4', 'Б5', 'Б6', 'Б7', 'Б8',
'Б9', 'В1', 'В2', 'В3', 'В4', 'В5', 'В6', 'В7', 'В8', 'В9', 'Г1', 'Г2', 'Г3', 'Г4', 'Г5', 'Г6', 'Г7',
'Г8', 'Г9', 'Д1', 'Д2', 'Д3', 'Д4', 'Д5', 'Д6', 'Д7', 'Д8', 'Д9', 'Е1', 'Е2', 'Е3', 'Е4', 'Е5', 'Е6',
'Е7', 'Е8', 'Е9', 'Ж1', 'Ж2', 'Ж3', 'Ж4', 'Ж5', 'Ж6', 'Ж7', 'Ж8', 'Ж9', 'З1', 'З2', 'З3', 'З4', 'З5',
'З6', 'З7', 'З8', 'З9', 'И1', 'И2', 'И3', 'И4', 'И5', 'И6', 'И7', 'И8', 'И9']
user_answ_inl_keyboard = telebot.types.InlineKeyboardMarkup(True)#это клава,для того, чтобы отвечать, попал бот или нет
butt_mimo = telebot.types.InlineKeyboardButton(text='Мимо', callback_data='missed')
butt_hit = telebot.types.InlineKeyboardButton(text='Ранил', callback_data='hit')
butt_kill = telebot.types.InlineKeyboardButton(text='Убил', callback_data='kill')
count = 0#ввел просто так пока что
bot = telebot.TeleBot('1576385428:AAGBJQsm0fbSCl5RmGaz8wnmuMRJvrqL2oQ')
@bot.message_handler(commands=['start'])
def command_answ(message):
bot.send_message(message.chat.id, text='Привет! Я бот, с которым ты можешь поиграть в морской бой⚓')
@bot.message_handler(content_types=['text'])
def playing_game(message):
if message.text == '/play':#команда для запуска игры
bot_vessels = bot_ships()#расставляю корабли
bot.send_message(message.chat.id, text='Начинаю игру! Я хожу первым:')
cell = random.choice(user_field)
bot.send_message(message.chat.od, text=f'{cell}', reply_markup=user_answ_inl_keyboard)
ship = []#это массив, содержащий координаты корабля, в который попадет бот
user_field.remove(cell)
bot.register_next_step_handler(message.chat.id, user_response)#передача действий на другую функцию - обработчик инлайновой клавы
@bot.callback_query_handler(func = lambda call: True)
def user_response(call):
if call.data == 'messed':
#потом поставлю что - то сюда
elif call.data == 'hit':#тут я еще не прописал, как бот должен добивать корабль, когда нашел одну из его клеток
ship.append(cell)#добавляем координаты корабля, в которого попали
pass
elif call.data == 'kill':
ship.append(cell)#добавляем координаты корабля, в которого попали
for i in ship: #удаляем этим циклом клетки, окружающие убитый корабль, дабы не стрелять туда, где других кораблей быть не может
x, y = i[0], i[1]
for j in range(dicty.index(x) - 1, dicty.index(x) + 2):
for g in range(int(y) - 1, int(y) + 2):
try:
impossible_cell = dicty[j] + str(int(g))
user_field.remove(impossible_cell)
except:
pass
ship = []#обнуляем массив, чтобы потом при новом попадании начать снова заносить в него координаты другого корабля
Да, сам по себе код пока не выполняет что-то цельное. Но я прикрепил скрин, где показывается, что в коде не читаются даже какие-то переменные. Буду космически признателен, если кто-то реально поможет. Заранее большое спасибо!