A Python wrapper for the Dogehouse API.

Overview

Python wrapper for the dogehouse API

Installation

pip install dogehouse

Example

from dogehouse import DogeClient, event, command
from dogehouse.entities import Message


class Client(DogeClient):
    @event
    async def on_ready(self):
        print(f"Successfully connected as {self.user}!")
        await self.create_room("Hello World!")

    @command
    async def foo(self, ctx: Message):
        await self.send("bar")


if __name__ == "__main__":
    Client("YourToken", "YourRefreshToken", prefix="!").run()
Comments
  • Things we need;

    Things we need;

    So, I'm new to Github and I don't know where to type comments so I'll issue it. The things we need the most;

    1. A documentation for the module! I had to look through the source code to find what I need
    2. Functions that can do these things: "Make Mod", "Make Room Admin", "Ban from Chat", "Ban from Room"
    enhancement 
    opened by asxlvm 16
  • Can't install using pip

    Can't install using pip

        ERROR: Command errored out with exit status 1:
         command: 'c:\users\notmm\appdata\local\programs\python\python39\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\notmm\\AppData\\Local\\Temp\\pip-install-fi1zbmzm\\dogehouse_737517342ab24e0db7771551e779c185\\setup.py'"'"'; __file__='"'"'C:\\Users\\notmm\\AppData\\Local\\Temp\\pip-install-fi1zbmzm\\dogehouse_737517342ab24e0db7771551e779c185\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\notmm\AppData\Local\Temp\pip-pip-egg-info-k9zoptcf'
             cwd: C:\Users\notmm\AppData\Local\Temp\pip-install-fi1zbmzm\dogehouse_737517342ab24e0db7771551e779c185\
        Complete output (5 lines):
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
            from dogehouse import __version__
        ModuleNotFoundError: No module named 'dogehouse'
        ----------------------------------------
    WARNING: Discarding https://files.pythonhosted.org/packages/da/7e/19b4411d56da680704ab5c38dff93a3ef48c9bb4da844ce205ee96b89e37/dogehouse-0.0.0.tar.gz#sha256=8a8527596a5dcbe143f23eeb2da0b62632703c1abb274f3d75eb3b727db55044 (from https://pypi.org/simple/dogehouse/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
    ERROR: Could not find a version that satisfies the requirement dogehouse
    ERROR: No matching distribution found for dogehouse```
    bug 
    opened by mmattbtw 7
  • Default set to None doesn't work

    Default set to None doesn't work

    Hey so, I'm not sure if this is my problem but;

      @command
      async def covid(self, ctx: Message, *, country = None):
        if country == None:
          await self.send("You have to specify a country to see their COVID stats! Example: d!covid Czechia")
          return
        else:
          pass
        
        cases = Covid().get_status_by_country_name(country.lower())
        
        region = cases["country"]
        confirmed = cases["confirmed"]
        active = cases["active"]
        deaths = cases["deaths"]
        recovered = cases["recovered"]
        
        await self.send(f"COVID stats for {region} • Confirmed Cases: {confirmed} • Active Cases: {active} • Deaths: {deaths} • Recovered: {recovered}")
    

    This is my command, it works normally but when the user doesn't specify the country, it should send the message "You have to specify a country..." but it doesn't, this works on Discord.py, not sure why it doesn't here! :D

    bug 
    opened by asxlvm 6
  • Default values don't work

    Default values don't work

    IMG_20210326_172512

    IMG_20210326_172445

    This is the code that I'm using;

      @command
      async def pp(self, ctx: Message, *, user: User = None):
        print(user)
        if user == None:
          user2 = ctx.author.mention
          print(user)
        else:
          user2 = user.mention
        pps = [ I don't wanna make the code long so I'm not including the list ]
        
        pprnd = random.choice(pps)
          
        await self.send(f"{user2}'s pp: ㅤㅤㅤ{pprnd}")
    

    Before the update, the tagging worked but obviously the ctx.author didn't, now it's vice-versa.

    invalid 
    opened by asxlvm 5
  • on_speaker_request event doesn't work?

    on_speaker_request event doesn't work?

    This is my code, am I wrong??

       	 @event
         async def on_speaker_request(self, user: User):
             await self.send(f"🎤 Welcome to the stage - {user.username}")
             await self.add_speaker(user)
    
    invalid 
    opened by mmattbtw 4
  • Convertors either don't work or I can't work with them

    Convertors either don't work or I can't work with them

    Hey, I'll leave the code I'm using at the bottom of the issue as it's long, I can't seem to get convertors working again, tell me what I'm doing wrong please

    File "main.py", line 121, in testbattle
        if user.id == ctx.author.id:
    AttributeError: 'str' object has no attribute 'id'
    

    Code:

    	@command
    	async def testbattle(self, ctx: Message, *, user: BaseUser):
    		if user == None:
    			return await self.send(message=f"{ctx.author.mention} Missing Required Argument - Usage: d!battle <user> • Example: d!fight @hudson", whisper=[ctx.author.id])
    		if user.id == ctx.author.id:
    			return await self.send(message=f"{ctx.author.mention} Bad Argument (You cannot battle yourself) - Usage: d!battle <user> • Example: d!fight @hudson", whisper=[ctx.author.id])
    		m_author_id = ctx.author.id
    		m_user_id = user.id
    		m_author_mention = ctx.author.mention
    		m_user_mention = user.mention
    		turn = random.choice([m_author_id, m_user_id])
    		currenthpauth = 100
    		currenthpuser = 100
    		players = [m_author_id, m_user_id]
    		moves = 0
    		try:
    			while True:
    				if turn == m_author_id:
    					currentturnid = m_author_id
    					currentturnmention = m_author_mention
    					currentturnhp = currenthpauth
    					notturnid = m_user_id
    					notturnmention = m_user_mention
    					notturnhp = currenthpuser
    				else:
    					currentturnid = m_user_id
    					currentturnmention = m_user_mention
    					currentturnhp = currenthpuser
    					notturnid = m_author_id
    					notturnmention = m_author_mention
    					notturnhp = currenthpauth
    				await ctx.send(message=f"{currentturnmention}, what will you do now? • OPTIONS: Fight, Defense, Surrender • Your HP: {currentturnhp} HP, Your opponent's HP: {notturnhp} HP", whisper=currentturnid)
    				msg = await self.wait_for(event=message, check=lambda message: msg.author.id == currentturnid)
    				msgcont = msg.lower()
    				if msgcont == 'fight':
    					damage = random.randint(1,35)
    					if damage == 35:
    						damage = random.randint(35,75)
    						dmgtext = f"{currentturnmention} made a critical hit of {damage} HP! :Pog:"
    					else:
    						dmgtext = f"{currentturnmention} chose violence. Damage of {damage} HP was given to {notturnmention}!"
    					notturnhp -= damage
    					await self.send(message=dmgtext, whisper=players)
    					moves += 1
    					if turn == m_author_id:
    						turn = m_user_id
    					else:
    						turn = m_author_id
    						
    				elif msgcont == 'defense':
    					healedhp = random.randint(5, 20)
    					currentturnhp += healedhp
    					if currentturnhp >= 100:
    						currentturnhp = 100
    					deftext = f"{currentturnmention} healed himself for {currentturnhp} HP!"
    					await self.send(message=deftext, whisper=players)
    					if turn == m_author_id:
    						turn = m_user_id
    					else:
    						turn = m_author_id
    				elif msgcont == 'surrender':
    					await self.send(message=f"{currentturnmention} surrendered S :OMEGALUL:  BAD", whisper=players)
    					return False
    			
    			if currenthpauth <= 0 or currenthpuser <= 0:
    				if currenthpauth > currenthpuser:
    					await self.send(f"{m_author_mention} has won against {m_user_mention} in {moves}! His remaining HP was {currenthpauth} HP.")
    					return False
    				elif currenthpuser > currenthpauth:
    					await self.send(f"{m_user_mention} has won against {m_author_mention} in {moves}! His remaining HP was {currenthpuser} HP.")
    					return False
    			else:
    				pass
    		except Exception as e:
    			print(e)
    
    invalid 
    opened by asxlvm 3
  • How could I use self.rooms?

    How could I use self.rooms?

    Hey! How would I get info from this? Because when I call self.rooms, I receive this biiiiig list and I can't seem to get stuff from it

    [<Room id=ec61ca17-e38e-4c7... creator_id=f955b622-9a34-43e... name=Undead computer s... description= created_at=2021-04-05 09:16:48.457705+00:00 is_private=False count=18 users=[<UserPreview id=f955b622-9a34-43e... displayname=Null num_followers=158>, <UserPreview id=1755d9d9-2133-4fa... displayname=Bitdefender Antiv... num_followers=105>, <UserPreview id=7b0136c4-45ca-4ab... displayname=James num_followers=86>, <UserPreview id=f4c6eadb-9062-486... displayname=Honbra num_followers=61>, <UserPreview id=2fbb1c5d-2ce3-44e... displayname=Alt num_followers=39>, <UserPreview id=05bb4c2c-d321-4d2... displayname=DodgyCoin Bot num_followers=30>, <UserPreview id=5a050137-adec-4ce... displayname=Amine Maminou num_followers=23>, <UserPreview id=de27447e-a633-484... displayname=Asylum num_followers=19>, <UserPreview id=ab2e518f-3e63-45f... displayname=DogeBoss 🐶 num_followers=13>, <UserPreview id=77e4fb39-cc1b-4fd... displayname=Mubarak Showole num_followers=9>]>, <Room id=91b403ea-3615-481... creator_id=21b94c3c-c39a-4b5... name=AngularHaters description= created_at=2021-04-05 10:00:33.718604+00:00 is_private=False count=5 users=[<UserPreview id=21b94c3c-c39a-4b5... displayname=Jay Prakash Pathak num_followers=20>, <UserPreview id=17c0b799-c8bf-4ba... displayname=zrv num_followers=12>, <UserPreview id=6474331d-7359-406... displayname=dayum son num_followers=2>, <UserPreview id=6da6ec1e-a375-437... displayname=Rohin Awale num_followers=0>, <UserPreview id=34b54f15-d69d-4fc... displayname=Doob num_followers=0>]>, <Room id=cbcb2c9d-d982-417... creator_id=1d8a143c-22f2-4f3... name=Jerby Room  description=27 daily prayers ... created_at=2021-03-31 18:31:51.903058+00:00 is_private=False count=4 users=[<UserPreview id=e2f77c8d-afc5-490... displayname=Erwin DePanda num_followers=12>, <UserPreview id=1d8a143c-22f2-4f3... displayname=LJL num_followers=7>, <UserPreview id=d8fc5bbf-0ad3-4d2... displayname=Crashloll num_followers=6>, <UserPreview id=7f89041c-ac7d-469... displayname=Cengiz Gürtusgil num_followers=0>]>, <Room id=3fc0fe65-0b44-46f... creator_id=e44ad29a-536e-491... name=idk description= created_at=2021-04-04 21:06:15.910658+00:00 is_private=False count=3 users=[<UserPreview id=e44ad29a-536e-491... displayname=HoloPanio num_followers=108>, <UserPreview id=4aea3675-1b08-4e6... displayname=Novice Doge num_followers=10>, <UserPreview id=7c0059ff-f506-43f... displayname=Dave num_followers=0>]>, <Room id=c761eaf1-124b-47b... creator_id=704d82a0-ff97-40a... name=DMTK description= created_at=2021-04-05 09:46:54.172012+00:00 is_private=False count=2 users=[<UserPreview id=704d82a0-ff97-40a... displayname=DrFolleDinde num_followers=7>, <UserPreview id=063b3450-c06d-458... displayname=Novice Doge num_followers=2>]>, <Room id=2d7d56c4-7366-42d... creator_id=8b195657-f94f-45c... name=DoobHouse! description=GitHub.com/DoobDe... created_at=2021-04-04 17:38:38.553335+00:00 is_private=False count=1 users=[<UserPreview id=8b195657-f94f-45c... displayname=Doob num_followers=4>]>, <Room id=345e228b-ecff-4c9... creator_id=1b5cd5cf-a858-4c2... name=1 on 1 AI Chat description=The Bot will repl... created_at=2021-04-04 23:05:30.232612+00:00 is_private=False count=1 users=[<UserPreview id=1b5cd5cf-a858-4c2... displayname=daBOT num_followers=7>]>]
    

    I tried self.rooms.name, self.rooms['name']

    Still doesn't work

    I'm trying to make a CLI

    question 
    opened by asxlvm 2
  • BaseUser doesn't trigger if the argument ends with a whitespace

    BaseUser doesn't trigger if the argument ends with a whitespace

    So, DogeHouse doesn't remove white spaces when a message has been sent with a space at the end, ex.; d!fight @asylum , it wouldn't trigger because of the whitespace, so you'd have to remove the whitespace at the end for it to work.

    I use BaseUser as my user arg. and I'm not sure if this happens with any other arg or if there's a way to fix that straight in your library or do I have to make an if endswith check in my code?

    bug 
    opened by asxlvm 2
  • DogeHouse.py bot low uptime

    DogeHouse.py bot low uptime

    Hey! Today I checked UptimeRobot to see stats on the Uptime of my Discord bots and my Dogehouse bot, I saw that the Dogehouse bot had a big difference in uptime IMG_20210330_111126

    Does that have something to do with the loop (that it's set to 30 minutes or smth) or is it just the socket disconnecting because it's not receiving anything?

    invalid 
    opened by asxlvm 2
  • NotEnoughArguments exception not called

    NotEnoughArguments exception not called

    Describe the bug The NotEnoughArguments error doesn't get called

    To Reproduce Steps to reproduce the behavior:

    1. Try the command and event below without any arguments:
    2. The output is tuple index out of range instead of NotEnoughArguments

    Expected behavior The error should return NotEnoughArguments instead of tuple index out of range

    Code

    	@event
    	async def on_error(self, error):
    		print(error)
    		if isinstance(error, dogehouse.exceptions.CommandNotFound):
    			print("not found")
    		elif isinstance(error, dogehouse.exceptions.NotEnoughArguments):
    			print("yisiso")
    		else:
    			print("no")
    
    	@command
    	async def testerror(self, ctx: Context, tellemes):
    		await self.send(tellemes)
    

    Screenshots IMG_20210420_102559

    Desktop (please complete the following information):

    • OS: [linux]
    • Browser [replit ide bruh?]
    • Version [the newest i guess]
    • Is this stuff really needed? I don't think OS and browser matter really

    Additional context no

    bug 
    opened by asxlvm 1
  • TypeError: object of type 'bool' has no len()

    TypeError: object of type 'bool' has no len()

    Describe the bug When receiving a User's permissions, the represents function doesn't cast non-string objects to a string, instead, it casts string objects to a string, meaning the object will always be a non-string, causing an error.

    To Reproduce Steps to reproduce the behavior:

    1. Make a simple dogehouse bot
    2. Call __repr__ on User.room_permissions
    3. See error

    And/or code:

    from dogehouse import DogeClient, event, command
    from dogehouse.entities import User
    
    class Client(DogeClient):
        @event
        async def on_ready(self):
            pass
    
        @command
        async def test(self, ctx):
            user = await self.fetch_user(ctx.author.id)
            print(user.room_permissions.__repr__()) # You can exclude the __repr__ if you want
    

    Expected behavior A string printed in stdout, something along the lines of <Permission asked_to_speak='False' is_mod='False' is_admin='True' is_speaker='False'>

    Screenshots Screenshot from 2021-04-18 11-51-21

    Desktop (please complete the following information):

    • OS: Manjaro Linux x86_64
    • Browser: Firefox
    • Version: 5.9.16-1-MANJARO

    Additional context You can solve this issue by swapping item and f"'{item}'" in line 52 of the /represents/representation.py file

    bug 
    opened by saihnii4 1
Releases(2.1.4)
Owner
Arthur
17 year old GO-AO informatics student
Arthur
Python script that extract data via YouTube Api and manipulates it.

UNLIMITED README for the Unlimited game [Mining game] Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About The Project

Serban Chisca 1 Dec 12, 2021
Modified Version of mega.py package for Pyrogram Bots

Pyro Mega.py Python library for the Mega.co.nz API, currently supporting: login uploading downloading deleting searching sharing renaming moving files

I'm Not A Bot #Left_TG 10 Aug 03, 2022
Actively maintained, pure Python wrapper for the Twitter API. Supports both normal and streaming Twitter APIs.

Twython Twython is a Python library providing an easy way to access Twitter data. Supports Python 3. It's been battle tested by companies, educational

Ryan McGrath 1.9k Jan 02, 2023
Backlog API v2 Client Library for Python

BacklogPy - Backlog API v2 Client Library for Python BacklogPy is Backlog API v2 Client Library for Python 2/3 Install You can install the client libr

Koudai Aono 7 Dec 16, 2022
CyberTKR - CyberTK-API

CyberTKR - CyberTK-API

TKR 2 Apr 08, 2022
This Telegram bot allows you to create direct links with pre-filled text to WhatsApp Chats

WhatsApp API Bot Telegram bot to create direct links with pre-filled text for WhatsApp Chats You can check our bot here. The bot is based on the API p

RobotTrick • רובוטריק 17 Aug 20, 2022
Telegram Reporter

[Telegram Reporter v.3 ] 🇮🇷 AliCybeRR 🇮🇷 [ AliCybeRR.Reporter feature ] Login Your Telegram account 👽 support Termux ❕ No Limits ⚡ Secure 🔐 Free

AliCybeRR 1 Jun 08, 2022
fair-test is a library to build and deploy FAIR metrics tests APIs supporting the specifications used by the FAIRMetrics working group.

☑️ FAIR test fair-test is a library to build and deploy FAIR metrics tests APIs supporting the specifications used by the FAIRMetrics working group. I

Maastricht University IDS 6 Oct 30, 2022
Useful tools for building interactions in Python

discord-interactions-python Types and helper functions for Discord Interactions webhooks. Installation Available via pypi: pip install discord-interac

Discord 77 Dec 07, 2022
“ HOLA HUMANS 👋 I'M DAISYX 2.0 „ LATEST VERSION OF DAISYX.. Source Code of @Daisyxbot

DaisyX 2.0 A Powerful, Smart And Simple Group Manager ... Written with AioGram , Pyrogram and Telethon... The first AioGram based modified groupmanage

TeamDaisyX 153 Dec 06, 2022
Python bindings for swm-core client REST API

Python bindings for swm-core client REST API Description Sky Port is an universal bus between user software and compute resources. It can also be cons

Sky Workflows 1 Jan 01, 2022
Bot interpretation of the carbon.now.sh site

📒 Source code of the @PicodeBot 🧸 Developer: @hoosnick Run $ git clone https://github.com/hoosnick/picodebot.git $ pip install -r requirements.txt P

Husniddin Murodov 13 Oct 02, 2022
This Bot Can Upload Video from Link Of Pdisk to Pdisk using its API. @PredatorHackerzZ

𝐏𝐝𝐢𝐬𝐤 𝐂𝐨𝐧𝐯𝐞𝐫𝐭𝐞𝐫 𝐁𝐨𝐭 Make short link by using 𝐏𝐝𝐢𝐬𝐤 API key Installation 𝐓𝐡𝐞 𝐄𝐚𝐬𝐲 𝐖𝐚𝐲 𝐑𝐞𝐪𝐮𝐢𝐫𝐞𝐝 𝐕𝐚𝐫𝐢𝐚𝐛𝐥𝐞

ρяє∂αтσя 25 Dec 02, 2022
This is a very simple botnet with a CnC server, made by me. Feel free to change anything

This is a very simple botnet with a CnC server, made by me. Feel free to change anything

8 Nov 12, 2022
ImaginaryTicketing is a simple ticketing system for running CTF Competitions on discord.

ImaginaryTicketing ImaginaryTicketing is a simple ticketing system for running CTF Competitions on discord. Be sure to checkout ImaginaryCTF. See docs

GudOreos 8 Jul 18, 2022
A Webhook spammer For Python

Webhooker Optimizations Asynchronous Fast & Efficient Multi Tasked Usage Put high threads/tasks for maximum impact Webhook must be valid Proof of conc

andria 1 Dec 20, 2021
Um bot simples para seguir as pessoas

Um bot simples para seguir pessoas no instagram, criado apeanas para testes. Utilizando o framework "Selenium", criei um bot para entrar em uma conta

Mobben 1 Nov 05, 2021
A simple telegram bot to download from Zee5 links

Zee5 Downloader If you find any bugs, report at @TroJanzSupport My Features: 👉 Upload as file/video from any NON-DRM Zee5 link 👉 Permanent thumbnail

TroJanzHEX 95 Dec 20, 2022
EZXT - A ccxt wrapped client for binance & ftx

EZXT Open source & beginner-friendly ccxt wrapped client for binance & ftx Want

Shaft 10 Oct 25, 2022
A multipurpose Telegram Bot written in Python for mirroring files on the Internet to Google Drive

Mirror Leech Bot Mirror Leech Bot is a multipurpose Telegram Bot written in Python for mirroring files on the Internet to our beloved Google Drive. Ba

1 Jan 01, 2022