return (test_g, test_k)
bot.send_message(айди группы, f'@{message.from_user.username} / {message.from_user.id} отправил тест на проверку\nЕго варианты были\nhttps://forms.gle/{test(message)[0]}\nhttps://forms.gle/{test(message)[1]}')
Полнейшая чушь.
Во-первых, запомни, что обработчики событий (всё, что декорировано message_handler() или подобным) не следует вызывать самостоятельно. Вот просто не следует. Их вызывает бот по мере надобности. Как следствие, возвращать из них тоже ничего не следует - бот это проигнорирует, а ты эти значения не получишь.
Во-вторых, выучи концепцию побочных эффектов при вызове функции и держи её в голове. Ты на ровном месте делаешь два вызова test(), которая имеет побочные эффекты в виде отправки сообщения, а потом удивляешься, что два раза отправляются сообщения! Причем именно что на ровном месте. Вот тебе что, грозят болтающееся отрезать за сохранение результата test() в ещё одну локальную переменную перед использованием этого результа? Конечно, это непринципиально, потому что test() вызывать нельзя (см. пункт 1), но всё равно показательно.
А что касается передачи инфы о действиях пользователя - заведи хранилище вида "id пользователя - пара ссылок". Подойдёт даже словарь, если тебе не нужно, чтобы инфа переживала перезапуск бота. И вот оттуда уже в well() вытаскивай инфу о том, что проходил текущий пользователь.
Учись программировать, потом пиши ботов. Не наоборот.