Здесь 2 ошибки:
1) В sql запросах не нужно использовать форматирование строк;
2) В строке:
if cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0] != None:
fetchone() вернул вам None, и вы далее обращаетесь к "первому" элементу None.
Я в дискорде не шарю, попробуйте такой пример:
user_id = 1 # id пользователя
result = cursor.execute("SELECT cash FROM users WHERE id = ?",(user_id,)).fetchone()
if result != None:
print('User found!')
else:
print('Error! User not found!')