Ошибка в этой строке
new_pos = (char_pos + key_char)
char_pos - позиция и имеет тип int.key_char является символом и имеет тип string.Вы не можете добавить одно к другому.
Также в этих строках непосредственно выше:
for cipher_char in plaintext:
char_pos = ALPHABET.index(cipher_char)
for key_char in key:
message_pos = ALPHABET.index(key_char)
Каждый из циклов for устанавливает переменные (char_pos и message_pos соответственно) снова и снова.Таким образом, учитываются только позиции последнего символа в каждой строке (открытый текст и ключ соответственно) в алфавите.Поэтому вам нужно немного переосмыслить логику.
Наконец, я предлагаю вам включить в ALPHABET символы верхнего регистра.Я получил ошибку значения в первый раз, когда попробовал, потому что я пытался вводить заглавные буквы.