1. Вместо mssX сделай список списков.
field = [ ['_'] * 3, ['_'] * 3, ['_'] * 3 ]
2. Для хода бота пройдись по полю, составь список координат, куда можно ходить. Потом выбирай рандомом из этого списка.
3. Проверку победы гораздо проще заменить на цикл. Соберём все элементы вдоль линии (вертикаль, горизонталь, диагональ) и посмотрим сколько разных элементов нашли. Если только 1 элемент, и это НЕ "_", то игрок с этим элементом победил.
for i in len(field): # перебираем элементы поля
values = { field[i][c] for c in len(field[i]) } # собираем символы i-й строки в _множество_
if len(values) == 1 and '_' not in values: # есть строка из одинаковых символов, но не из "_"
return field[i][0] # возвращаем символ-победитель
values = { field[r][i] for r in len(field) } # собираем символы i-го столбца
if len(values) == 1 and '_' not in values: # есть столбец из одинаковых символов, но не из "_"
return field[0][i] # возвращаем символ-победитель
По аналогии сделаешь диагонали.