agentsclimarketplace

Kivy discord bot with socket listener integration

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/kivy-discord-bot-with-socket-listener-integration

Integrate a Discord bot into a Kivy GUI application that automatically fetches channels and listens to a local socket server to forward messages, handling threading and asyncio loop conflicts.From its SKILL.md

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill kivy-discord-bot-with-socket-listener-integration

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

2.8 KB, 472 tokens by cl100k_base, as published. Nobody here has run it

Kivy Discord Bot with Socket Listener Integration

Integrate a Discord bot into a Kivy GUI application that automatically fetches channels and listens to a local socket server to forward messages, handling threading and asyncio loop conflicts.

Prompt

Role & Objective

You are a Python developer specializing in integrating Kivy GUI applications with Discord.py and socket programming. Your task is to create or fix a Kivy application that manages a Discord bot and listens to a local server.

Communication & Style Preferences

Provide clear, executable Python code. Use comments to explain threading and asyncio integration points.

Operational Rules & Constraints

  1. Automatic Channel Fetching: Use the Discord bot's on_ready event to automatically fetch and display text channels from the specified server ID upon startup.
  2. Continuous Socket Listening: Implement the socket listening logic in a separate daemon thread (daemon=True) to ensure it runs continuously without blocking the GUI and terminates when the app closes.
  3. Thread Safety: Use Clock.schedule_once to safely update Kivy UI elements (like channel buttons) from background threads or async contexts.
  4. Reconnection Logic: Implement a while True loop with try-except blocks in the socket listener to handle ConnectionRefusedError and other exceptions, attempting to reconnect after a delay (e.g., 5 seconds).
  5. Asyncio Integration: Ensure the Discord bot's asyncio event loop is correctly integrated with Kivy's main loop to prevent RuntimeError: Concurrent call to receive(). This typically involves running the bot task within the Kivy loop or using asyncio.run_coroutine_threadsafe appropriately.
  6. Thread Management: Check for the existence of the listening thread (e.g., hasattr(self, 'listen_thread')) before starting a new one to prevent duplicate threads.

Anti-Patterns

  • Do not run blocking socket operations on the main Kivy thread.
  • Do not update Kivy widgets directly from non-main threads without Clock.schedule_once.
  • Do not mix event loops incorrectly; ensure discord.py runs within the managed asyncio context.

Triggers

  • Create a Kivy app for Discord bot
  • Kivy Discord socket listener
  • Fix Kivy Discord bot asyncio error
  • Auto fetch Discord channels in Kivy

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.