tonhowtf/omniget · error
nenhum emote encontrado — confira o canal e deixe pelo…
Error message
nenhum emote encontrado — confira o canal e deixe pelo menos um provedor ligado
What it means
After collecting emotes from all enabled providers (Twitch, BTTV, FFZ, 7TV), run() throws when the items list is empty. This prevents the tool from continuing to dedupe/sort/download nothing and gives an actionable message naming both likely causes: wrong channel and disabled providers.
Solutions
- Re-check the channel name/login for typos
- Enable at least one provider (Twitch/BTTV/FFZ/7TV) in the tool options
- Run against a channel known to have emotes to verify the setup
- Check logs for per-provider warnings (e.g. '7TV global falhou') indicating network or API failures
Example fix
// before
let opts = EmoteOpts { channel: "xqcoww".into(), bttv: false, ffz: false, seven_tv: false, .. };
// after
let opts = EmoteOpts { channel: "xqc".into(), bttv: true, ffz: true, seven_tv: true, .. }; Defensive patterns
Strategy: validation
Validate before calling
// Enable at least one provider and confirm the channel is valid before running.
let any_provider = opts.twitch || opts.bttv || opts.ffz || opts.seven_tv;
let valid_channel = opts.channel.trim().is_empty()
|| opts.channel.split('/').last().map_or(false, |l| !l.is_empty());
if !any_provider || !valid_channel {
eprintln!("Enable a provider and check the channel name");
return Ok(());
} Try / catch
match run(opts).await {
Err(e) if e.to_string().contains("nenhum emote encontrado") => {
eprintln!("No emotes: verify channel and enable at least one provider");
}
other => other?,
} Prevention
- Check the channel has emotes on twitch.tv before running
- Always leave at least one provider enabled
- Watch logs for silent per-provider failures (e.g. 7TV warnings)
- Test with a well-known channel (e.g. xqc) to validate setup
When it happens
Trigger: Calling the emotes tool with a channel that has no fetchable emotes from any enabled provider, or with all provider backends disabled in the options, or when every provider request failed but its error was only logged (e.g. the 7TV warn in the source).
Common situations: Typo in the channel login combined with per-provider error swallowing; running with provider flags turned off; a brand-new channel with no custom emotes; network/proxy failures that made each provider silently fail.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- esse VOD não devolveu nenhuma mensagem de chat
- respondeu HTTP
- HTTP
- arquivo vazio
- não reconheci esse canal
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/364a1109afe4658c.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/tools/twitch/emotes.rs:657
match json_get(&http, &url).await {
Ok(v) => {
if let Some(set) = v.get("emote_set") {
items.extend(parse_7tv(set, "channel"));
}
}
Err(e) => tracing::warn!("7TV do canal falhou: {}", e),
}
}
if opts.global {
match json_get(&http, "https://7tv.io/v3/emote-sets/global").await {
Ok(v) => items.extend(parse_7tv(&v, "global")),
Err(e) => tracing::warn!("7TV global falhou: {}", e),
}
}
}
if items.is_empty() {
return Err(anyhow!(
"nenhum emote encontrado — confira o canal e deixe pelo menos um provedor ligado"
));
}
let (mut items, duplicates) = dedupe(items);
items.sort_by(|a, b| {
a.kind
.cmp(&b.kind)
.then_with(|| a.provider.cmp(&b.provider))
.then_with(|| a.code.to_lowercase().cmp(&b.code.to_lowercase()))
});
// Nome de arquivo e pasta antes de baixar, para o download ser paralelo.
let root = PathBuf::from(&opts.out_dir).join(format!("{}-emotes", sanitize_name(&label)));
let mut taken: HashMap<String, HashSet<String>> = HashMap::new();
let mut planned: Vec<(usize, PathBuf)> = Vec::new();
for (i, e) in items.iter_mut().enumerate() {
let folder = if e.kind == "badge" {View on GitHub (pinned to 8600b91f42)