Eu precisava desesperadamente do mesmo recurso há dois anos. Ainda não descobri como fazer isso (mais) corretamente. Este é meu truque:
def get_topic_post(topic_id, post_num)
topic = @api.topic(topic_id, {print: true})
post_obj = topic['post_stream']['posts'].find { |p| p['post_number'] == post_num }
if post_obj
post_obj['id']
else
throw "Não foi possível encontrar o post #{topic_id}/#{post_num}."
end
end
Isso contorna os problemas mencionados: o {print: true} resolve o problema de paginação. O find é necessário porque a moderação pode criar uma incompatibilidade entre os índices do array e os números dos posts.
Funciona para tópicos do tamanho com o qual estou trabalhando. Ainda assim, uma maneira mais direta através da API seria mais satisfatória.