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
Check and write all account info + Check nitro on account

Discord-Token-Checker Check and write all account info + Check nitro on account Also check https://github.com/GuFFy12/Discord-Token-Parser (Parse disc

36 Jan 01, 2023
Stock Market Insights is a Dashboard that gives the 360 degree view of the particular company stock

fedora-easyfix A collection of self-contained and well-documented issues for newcomers to start contributing with How to setup the local development e

Ganesh N 3 Sep 10, 2021
Scripts to help you win the Pizza Express

Slice of the Prizes Slice of the Prizes is a Python Script designed to enter the "Slice of the Action" competition hosted by Pizza Express the competi

Luke Bendall 1 Nov 04, 2021
A module to complement discord.py that has Music, Paginator and Levelling.

discord-super-utils A modern python module including many useful features that make discord bot programming extremely easy. Features Modern leveling m

Yash 106 Dec 19, 2022
Script Crack Facebook, and Instagram 🚶‍♂

in-mbf Script Crack Facebook, and Instagram 🚶‍♂ Bukti Install Script $ pkg update && pkg upgrade $ pkg install git $ pkg install python2 $ pip2 insta

Yumasaa 5 Dec 27, 2021
An almost dependency-less, synchronous Discord gateway library meant for my personal use

An almost dependency-less, synchronous Discord gateway library meant for my personal use.

h0nda 4 Feb 05, 2022
Anti Spam/NSFW Telegram Bot Written In Python With Pyrogram.

Anti Spam/NSFW Telegram Bot Written In Python With Pyrogram.

Wahyusaputra 2 Dec 29, 2021
A Discord webhook spammer made in Python.

A Python made Discord webhook spammer usually used for token loggers to spam them/delete them original by cattyn I only made it so u can change the avatar to whatever u want instead of it being hardc

notperry1234567890 15 Dec 15, 2021
A Simple Telegram Bot That Can Generate Strong Password With Many Features Written In Python Using Pyrogram

Password-Generator-Bot A Simple Telegram Bot That Can Generate Strong Password With Many Features Written In Python Using Pyrogram Features Random Pas

Muhammed Fazin 17 Dec 23, 2022
Search stock images (e.g. via Unsplash) and save them to your Wagtail image library.

Wagtail Stock Images Search stock images (e.g. via Unsplash) and save them to your Wagtail image library. Requirements Python 3 Django = 2 Wagtail =

Vicktor 12 Oct 12, 2022
A discord bot consuming Notion API to add, retrieve data to Notion databases.

Notion-DiscordBot A discord bot consuming Notion API to add and retrieve data from Notion databases. Instructions to use the bot: Pre-Requisites: a)In

Servatom 57 Dec 29, 2022
Python client for Midea dhumidifier

This is a library that allows communication with Midea dehumidifier appliances via the local area network. midea-beautiful-dehumidifier This library a

Nenad Bogojevic 42 Dec 22, 2022
A better rename and convert bot with upload mode option and Auto detection

A better rename and convert bot with upload mode option and Auto detection

Code X Mania 2 Nov 09, 2021
PRAW, an acronym for "Python Reddit API Wrapper", is a python package that allows for simple access to Reddit's API.

PRAW: The Python Reddit API Wrapper PRAW, an acronym for "Python Reddit API Wrapper", is a Python package that allows for simple access to Reddit's AP

Python Reddit API Wrapper Development 3k Dec 29, 2022
Innocent-Bot - A Discord client self-bot for destroying, nuking and causing mischief in servers

Innocent-bot A Discord client self-bot for destroying, nuking and causing mischi

†† 5 Jan 26, 2022
A python oriented telegram with API of yobit.net

YoBit-BTC A python oriented telegram bot with API of https://yobit.net/ Developed By @riz4d What is Yobit? ➪ YoBit is a cryptocurrency exchange that w

Muhammed Rizad 6 Apr 02, 2022
A Advanced Powerful, Smart And Intelligent Group Management Bot With New And Powerful Features

Vegeta Robot A Advanced Powerful, Smart And Intelligent Group Management Bot With New And Powerful Features ... Written with Pyrogram and Telethon...

⚡ CT_PRO ⚡ 9 Nov 16, 2022
Unofficial API wrapper for seedr.cc

Seedr API Unofficial API wrapper for seedr.cc Inspired by theabbie's seedr-api Powered by @harp_tech (Telegram) How to use You can install lib via git

Anjana Madu 49 Oct 24, 2022
A github actions + python code to extract URLs to code repositories to put into standard form, starting with github

A github actions + python code to extract URLs to code repositories to put into standard form, starting with github ---- NOTE: JUS

Justin Gosses 2 Nov 15, 2021
🛒 Bot de lista de compras compartilhada para o Telegram

Lista de Compras Lista de compras de Cuducos e Flávia. Comandos do bot Comando Descrição /add item Adiciona item à lista de compras /remove item

Eduardo Cuducos 4 Jan 15, 2022