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

  1. Re-check the channel name/login for typos
  2. Enable at least one provider (Twitch/BTTV/FFZ/7TV) in the tool options
  3. Run against a channel known to have emotes to verify the setup
  4. 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

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


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)