# Message filters You can use a special notation to filter messages that you want to have included in an export. The notation syntax is designed to mimic Discord's search query syntax, but with additional capabilities. To configure a filter, specify it in advanced export parameters when using the GUI or by passing the `--filter` option when using the CLI. For the CLI version, see also [caveats](#cli-caveats). ## Examples - Filter by user ```console from:Tyrrrz ``` - Filter by user (with discriminator) ```console from:Tyrrrz#1234 ``` - Filter by message content (allowed values: `link`, `embed`, `file`, `video`, `image`, `sound`) ```console has:image ``` - Filter by mentioned user (same rules apply as with `from:` filter) ```console mentions:Tyrrrz#1234 ``` - Filter by contained text (has word "hello" and word "world" somewhere in the message text): ```console hello world ``` - Filter by contained text (has the string "hello world" somewhere in the message text): ```console "hello world" ``` - Combine multiple filters ('and'): ```console from:Tyrrrz has:image ``` - Same thing but with an explicit operator: ```console from:Tyrrrz & has:image ``` - Combine multiple filters ('or'): ```console from:Tyrrrz | from:"96-LB" ``` - Combine multiple filters using groups: ```console (from:Tyrrrz | from:"96-LB") has:image ``` - Negate a filter: ```console -from:Tyrrrz | -has:image ``` - Negate a grouped filter: ```console -(from:Tyrrrz has:image) ``` - Escape special characters (`-` is escaped below, so it's not parsed as negation operator): ```console from:96\-LB ``` ## CLI Caveats In most cases, you will need to enclose your filter in quotes (`"`) to escape characters that may have special meaning in your shell: ```console $ ./DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz has:image" ``` If you need to include quotes inside the filter itself as well, use single quotes (`'`) for those instead: ```console $ ./DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz 'hello world'" ``` Additionally, negated filters (those that start with `-`) may cause parsing issues even when enclosed in quotes. To avoid this, use the tilde (`~`) character instead of the dash (`-`): ```console $ ./DiscordChatExporter.Cli export [...] --filter ~from:Tyrrrz ```