Updates the Gemini 2.5 Pro model from `gemini-2.5-pro-preview-05-06` to `gemini-2.5-pro-preview-06-05` across configurations.
This ensures the use of the more recent preview version of the model.
Introduces a new TTS provider using Google Cloud Text-to-Speech (Chirp HD model). This allows for higher quality and more natural-sounding voice synthesis.
The `TTSProviderCog` now includes:
- A `google_cloud_tts` option in the `_synthesize_speech` method.
- Checks for the `google-cloud-texttospeech` library and provides installation instructions if missing.
- Error handling for common Google Cloud TTS issues like quota limits or credential problems.
- A new choice in the `/ttsprovider` slash command for "Google Cloud TTS (Chirp HD)".
- A check for the availability of the `google.cloud.texttospeech` module on startup.
Introduces `EMOJI_STICKER_DESCRIPTION_MODEL` to `config.py` and uses it in `generate_image_description` for "emoji" and "sticker" item types. This ensures a dedicated model is used for these specific image description tasks, improving accuracy or efficiency.
Introduce send_tenor_gif tool that uses AI to select the best GIF from Tenor search results and send it to the channel. Increase the default and maximum limits for Tenor GIF search tools to improve selection quality. Update parameter descriptions and validation accordingly.
This commit introduces two main enhancements to Gurt's capabilities:
1. **Tenor GIF Integration:**
* The AI can now request Tenor GIFs via a `request_tenor_gif_query` field in its response schema.
* `api.py` handles these requests by searching Tenor (using the new `TENOR_API_KEY` from config) and appending the GIF URL to the AI's message content.
* System prompts have been updated to instruct the AI on how to request GIFs.
2. **Custom Emoji & Sticker Learning and Usage:**
* Introduces an `EmojiManager` (in the new `gurt/emojis.py`) to store and manage mappings of custom emoji/sticker names to their URLs. This data is persisted to `EMOJI_STORAGE_FILE`.
* Gurt now automatically learns custom emojis and stickers (and their URLs) from user messages via the `on_message` listener in `listeners.py`.
* The AI can be prompted to use these learned emojis/stickers by referencing their `:name:`.
* `api.py` processes AI responses to identify known custom emojis/stickers. For stickers, their URL is appended to the content if mentioned.
* A `learnemoji` command has been added for manually teaching Gurt emojis/stickers, although automatic learning is the primary mechanism.
* System prompts are updated to guide the AI on using custom emojis/stickers.
Introduces `get_user_avatar_data` to retrieve a user's avatar as base64 encoded image data, allowing the AI to "see" the profile picture directly. This includes special handling in `process_requested_tools` to attach the image as a `types.Part` in the prompt.
Also adds `get_user_highest_role_color` to fetch the color and details of a user's highest-positioned role.
This commit improves user identification in two key areas:
1. **AI Response Context:**
In `gurt/api.py`, messages processed by the AI now include a more informative author string, combining the user's display name and username (e.g., "DisplayName (Username: actual_username)"). This provides richer context about message authors.
2. **Tool Definitions:**
Descriptions for tools in `gurt/config.py` and `gurt/prompt.py` (e.g., `search_user_messages`, `get_user_facts`) and their parameters have been updated to explicitly state that user identification relies on "User ID". This enhances clarity for the AI model and developers.
Implement `/gurtignore` commands to manage channels Gurt should ignore.
- Add `gurtignore add` to add a channel to the ignore list.
- Add `gurtignore remove` to remove a channel from the ignore list.
- Add `gurtignore list` to display currently ignored channels.
- Update `GurtCog` and `config.py` to support ignored channel IDs and file management.
- Ensure ignore commands are owner-only.
- Modify `listeners.py` to prevent Gurt from processing messages in ignored channels.