Pymegle
Pymegle is an unofficial API for Omegle's text chat using asyncio. It provides an interface for connecting to text chats and asynchronous event handling. This package also comes bundled with a full-featured user client that can be run in the console.
DISCLAIMER: This software is not intended to be used for spam or other disruptive/malicious activities. Please abide by Omegle's terms of service.
Installation
Pymegle can be installed from PyPi using the following command:
pip install pymegle
Starting Out
The simplest usage of this package is interacting with the user client. It can be run using the following code.
NOTE: Many consoles were not designed with asynchronous operation in mind and as a result may experience issues when running the interactive client. PyCharm's Python Console and the Windows command prompt tend to perform the best.
import pymegle
pymegle.run_user_clent()
The user client recreates the Omegle browser experience in the console, showcasing what can be done with this API.
Basic Usage
The OmegleChat
class is the basic handler for text chat interactions. It represents a single chat between the client
(user) and a partner. It can be inherited to handle various events, such as receiving messages.
For this example, we will make a simple dice roller that responds to a command given by the partner and sends a result.
import pymegle
import random
class DiceRoller(pymegle.OmegleChat):
def __init__(self, **kwargs):
super().__init__(**kwargs)
# Automatically add 'diceroller' to the chat request's interests
self.interests.add("diceroller")
# This coroutine is called when the client successfully connects to a partner
async def on_connected(self, i):
# Send a greeting message
await self.send_message("Hello! Type /roll and I will roll a 6 sided die for you")
# This coroutine is called when the partner sends a message
async def on_message(self, m):
# Check if the message matches the specified command
if m == "/roll":
await self.send_message("🎲 Rolling...")
await self.type_message(f"Result: {random.randrange(1, 7)}")
The above chat can then be run by doing:
chat = DiceRoller()
chat.start()
Then, connect to Omegle with diceroller
in the interests to test it.
The chat class can be wrapped in an OmegleClient
to provide more functionality, namely the ability to automatically
begin a new chat when the current one is finished.
class MyClient(pymegle.OmegleClient):
# This is called when a chat ends
def on_chat_end(self, log):
# Returning True tells the client to start a new chat
return True
client = MyClient(DiceRoller)
client.start()