Remove yaml, convert all configs to json
This commit is contained in:
parent
bdf0081ba8
commit
f6404047cf
|
@ -3,6 +3,10 @@
|
||||||
|
|
||||||
Module capable of operating Bitcoind-style RPC. Provided as a service.
|
Module capable of operating Bitcoind-style RPC. Provided as a service.
|
||||||
|
|
||||||
|
.. note:: This module requires installation of some :doc:`optional dependencies </setup/dependencies>`:
|
||||||
|
|
||||||
|
* bitcoinrpc
|
||||||
|
|
||||||
Class Reference
|
Class Reference
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
:mod:`DogeRPC` --- A dogecoind RPC service
|
:mod:`DogeRPC` --- A dogecoind RPC service
|
||||||
==========================================
|
==========================================
|
||||||
|
|
||||||
This module provides a service for interacting with dogecoind.
|
This module provides a service called ``dogerpc`` for interacting with dogecoind.
|
||||||
|
|
||||||
|
.. note:: This module requires installation of some :doc:`optional dependencies </setup/dependencies>`:
|
||||||
|
|
||||||
|
* bitcoinrpc
|
||||||
|
|
||||||
|
A dogecoin daemon is required to use this module. It must be configured to
|
||||||
|
allow RPC connections.
|
||||||
|
|
||||||
Class Reference
|
Class Reference
|
||||||
---------------
|
---------------
|
||||||
|
@ -10,3 +17,5 @@ Class Reference
|
||||||
:members:
|
:members:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,67 @@
|
||||||
=========================================================
|
=========================================================
|
||||||
|
|
||||||
This module provides a word scrambling game that rewards winners with small
|
This module provides a word scrambling game that rewards winners with small
|
||||||
amounts of Dogecoin
|
amounts of Dogecoin. Requires a ``dogerpc`` service provider such as
|
||||||
|
:doc:`DogeRPC </api/modules/dogerpc>`.
|
||||||
|
|
||||||
|
Config
|
||||||
|
------
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"hintDelay": 15,
|
||||||
|
"delayNext": 5,
|
||||||
|
"maxHints": 5,
|
||||||
|
"abortAfterNoGuesses": 2,
|
||||||
|
"categoryduration": 10,
|
||||||
|
"winAmount": 5,
|
||||||
|
"decreaseFactor": 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
In addition to the json config above, additional categories of words may be
|
||||||
|
added by adding additional text files to the DogeScramble data dir.
|
||||||
|
|
||||||
|
.. cmdoption:: hintDelay
|
||||||
|
|
||||||
|
Seconds between hints if the word is not guessed
|
||||||
|
|
||||||
|
.. cmdoption:: delayNext
|
||||||
|
|
||||||
|
Delay in seconds between the end of one round and start of the next
|
||||||
|
|
||||||
|
.. cmdoption:: maxHints
|
||||||
|
|
||||||
|
How many letters will be hinted before the word is thrown away
|
||||||
|
|
||||||
|
.. cmdoption:: abortAfterNoGuesses
|
||||||
|
|
||||||
|
How many rounds may pass with no players guessing. Once this count is
|
||||||
|
passed, the game is automatically stopped.
|
||||||
|
|
||||||
|
.. cmdoption:: categoryduration
|
||||||
|
|
||||||
|
Number of words used from a category before changing the category
|
||||||
|
|
||||||
|
.. cmdoption:: winAmount
|
||||||
|
|
||||||
|
Amount of dogecoin to send the winner
|
||||||
|
|
||||||
|
.. cmdoption:: decreaseFactor
|
||||||
|
|
||||||
|
For subsequent wins by the same player, the reward will be the previous
|
||||||
|
reward multiplied times this number
|
||||||
|
|
||||||
|
Commands
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. cmdoption:: .scramble
|
||||||
|
|
||||||
|
Start the unscramble game
|
||||||
|
|
||||||
|
.. cmdoption:: .scrambleoff
|
||||||
|
|
||||||
|
Stop the unscramble game
|
||||||
|
|
||||||
Class Reference
|
Class Reference
|
||||||
---------------
|
---------------
|
||||||
|
|
|
@ -1,7 +1,21 @@
|
||||||
:mod:`DuckHunt` --- Duckhunt game
|
:mod:`DuckHunt` --- Duckhunt game
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
An animal hunting IRC game
|
Example usage:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
3:15:06 PM <pyircbot3> \_o< Quack!
|
||||||
|
3:15:08 PM <@dave-irccloud> !shoot
|
||||||
|
3:15:08 PM <pyircbot3> dave-irccloud fires after 1.73 seconds and misses!
|
||||||
|
3:15:09 PM <@dave-irccloud> !shoot
|
||||||
|
3:15:10 PM <pyircbot3> dave-irccloud fires after 3.83 seconds and misses!
|
||||||
|
3:15:11 PM <@dave-irccloud> !shoot
|
||||||
|
3:15:11 PM <pyircbot3> dave-irccloud bags a 2.63 lb Duck in 4.92 seconds!
|
||||||
|
3:15:19 PM <@dave-irccloud> !huntscore
|
||||||
|
<< in pm >>
|
||||||
|
3:15:19 PM <pyircbot3> 0 prime catches, 0 runts, 3 bullets used and 2 misses.
|
||||||
|
3:15:20 PM <pyircbot3> You've shot 1 Ducks for a total weight of 2.63 lbs.
|
||||||
|
|
||||||
Class Reference
|
Class Reference
|
||||||
---------------
|
---------------
|
||||||
|
|
|
@ -1,5 +1,21 @@
|
||||||
:mod:`Scramble` --- Module to provide a word scramble game
|
:mod:`Scramble` --- Word scramble game module
|
||||||
==========================================================
|
=============================================
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
3:04:00 PM <@dave-irccloud> .scrambleon
|
||||||
|
3:04:00 PM <pyircbot3> New word - leppa
|
||||||
|
3:04:15 PM <pyircbot3> Hint: - a____
|
||||||
|
3:04:30 PM <pyircbot3> Hint: - ap___
|
||||||
|
3:04:32 PM <@dave-irccloud> apple
|
||||||
|
3:04:32 PM <pyircbot3> dave-irccloud guessed the word - apple! dave-irccloud now has 3 points. Next word in 5 seconds.
|
||||||
|
3:04:35 PM <@dave-irccloud> .scrambleoff
|
||||||
|
3:04:39 PM <@dave-irccloud> .scramble top
|
||||||
|
3:04:39 PM <pyircbot3> Top 1: dave-irccloud: 3
|
||||||
|
|
||||||
|
Requires a dictionary to pull words from, ``words.txt`` should be placed in: ``./datadir/data/Scramble/``
|
||||||
|
|
||||||
Class Reference
|
Class Reference
|
||||||
---------------
|
---------------
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Setup Tutorial
|
Setup Tutorial
|
||||||
==============
|
==============
|
||||||
|
|
||||||
Installing and runnig PyIRCBot requires installing the needed dependancies and
|
Installing and runnig PyIRCBot requires installing the needed dependencies and
|
||||||
providing some environmental information about where the bot is being run.
|
providing some environmental information about where the bot is being run.
|
||||||
|
|
||||||
Contents:
|
Contents:
|
||||||
|
@ -9,6 +9,6 @@ Contents:
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 8
|
:maxdepth: 8
|
||||||
|
|
||||||
dependancies.rst
|
dependencies.rst
|
||||||
initial_config.rst
|
initial_config.rst
|
||||||
running.rst
|
running.rst
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
************
|
************
|
||||||
Dependancies
|
Dependencies
|
||||||
************
|
************
|
||||||
|
|
||||||
PyIRCBot is designed to run on Python 3, and is usually tested with 3.4. Python
|
PyIRCBot is designed to run on Python 3, and is usually tested with 3.4. Python
|
||||||
|
@ -23,3 +23,10 @@ them.
|
||||||
- **bitcoinrpc** - https://github.com/jgarzik/python-bitcoinrpc
|
- **bitcoinrpc** - https://github.com/jgarzik/python-bitcoinrpc
|
||||||
- **pymysql** - https://github.com/dpedu/MySQL-for-Python-3 (needs \
|
- **pymysql** - https://github.com/dpedu/MySQL-for-Python-3 (needs \
|
||||||
libmysqlclient-dev on your system)
|
libmysqlclient-dev on your system)
|
||||||
|
|
||||||
|
At time of writing there is a bug that will prevent the bitcoinrpc module from
|
||||||
|
working with Python 3. When pull `#55`_ is merged, the bug will be fixed.
|
||||||
|
Until then, using my `fork`_ is recommended.
|
||||||
|
|
||||||
|
.. _#55: https://github.com/jgarzik/python-bitcoinrpc/pull/55
|
||||||
|
.. _fork: https://github.com/dpedu/python-bitcoinrpc
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"cache": 300
|
||||||
|
}
|
|
@ -1 +0,0 @@
|
||||||
cache: 300
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"allowDelete": true,
|
||||||
|
"delaySubmit": 0,
|
||||||
|
"delayCalc": 0,
|
||||||
|
"delayCalcSpecific": 0,
|
||||||
|
"delayMatch": 0,
|
||||||
|
"cmd_calc": [
|
||||||
|
".calc",
|
||||||
|
"calc",
|
||||||
|
".quote"
|
||||||
|
],
|
||||||
|
"cmd_match": [
|
||||||
|
".match",
|
||||||
|
"match"
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,12 +0,0 @@
|
||||||
allowDelete: true
|
|
||||||
delaySubmit: 0
|
|
||||||
delayCalc: 0
|
|
||||||
delayCalcSpecific: 0
|
|
||||||
delayMatch: 0
|
|
||||||
cmd_calc:
|
|
||||||
- .calc
|
|
||||||
- calc
|
|
||||||
- .quote
|
|
||||||
cmd_match:
|
|
||||||
- .match
|
|
||||||
- match
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"types": {
|
||||||
|
"LTC": {
|
||||||
|
"name": "Litecoin",
|
||||||
|
"abbr": "LTC",
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"username": "user",
|
||||||
|
"password": "pass",
|
||||||
|
"port": 12893,
|
||||||
|
"precision": 8,
|
||||||
|
"reserve": 0.01,
|
||||||
|
"link": "https://litecoin.org/"
|
||||||
|
},
|
||||||
|
"BTC": {
|
||||||
|
"name": "Bitcoin",
|
||||||
|
"abbr": "BTC",
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"username": "user",
|
||||||
|
"password": "pass",
|
||||||
|
"port": 48191,
|
||||||
|
"precision": 8,
|
||||||
|
"reserve": 0.001,
|
||||||
|
"link": "http://bitcoin.org/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,21 +0,0 @@
|
||||||
types:
|
|
||||||
LTC:
|
|
||||||
name: Litecoin
|
|
||||||
abbr: LTC
|
|
||||||
host: 127.0.0.1
|
|
||||||
username: user
|
|
||||||
password: pass
|
|
||||||
port: 12893
|
|
||||||
precision: 8
|
|
||||||
reserve: .01
|
|
||||||
link: https://litecoin.org/
|
|
||||||
BTC:
|
|
||||||
name: Bitcoin
|
|
||||||
abbr: BTC
|
|
||||||
host: 127.0.0.1
|
|
||||||
username: user
|
|
||||||
password: pass
|
|
||||||
port: 48191
|
|
||||||
precision: 8
|
|
||||||
reserve: .001
|
|
||||||
link: http://bitcoin.org/
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"minBet": 0.01,
|
||||||
|
"lobbyIdleSeconds": 15,
|
||||||
|
"channelWhitelistOn": true,
|
||||||
|
"channelWhitelist": [
|
||||||
|
"dogegamestest",
|
||||||
|
"test"
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,6 +0,0 @@
|
||||||
minBet: .01
|
|
||||||
lobbyIdleSeconds: 15
|
|
||||||
channelWhitelistOn: True
|
|
||||||
channelWhitelist:
|
|
||||||
- dogegamestest
|
|
||||||
- test
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"username": "wallet_rpc_user",
|
||||||
|
"password": "wallet_rpc_pass",
|
||||||
|
"port": 22555
|
||||||
|
}
|
|
@ -1,4 +0,0 @@
|
||||||
host: 127.0.0.1
|
|
||||||
username: wallet_rpc_user
|
|
||||||
password: wallet_rpc_pass
|
|
||||||
port: 22555
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"hintDelay": 15,
|
||||||
|
"delayNext": 5,
|
||||||
|
"maxHints": 5,
|
||||||
|
"abortAfterNoGuesses": 2,
|
||||||
|
"categoryduration": 10,
|
||||||
|
"winAmount": 5,
|
||||||
|
"decreaseFactor": 0.75
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"delayMin": 5,
|
||||||
|
"delayMax": 15,
|
||||||
|
"missChance": 50,
|
||||||
|
"animal": "\\_o< Quack!",
|
||||||
|
"animalSpecies": "Duck",
|
||||||
|
"animalSpeciesPlural": "Ducks",
|
||||||
|
"animalNameMale": "Duck",
|
||||||
|
"animalNameFemale": "Duck",
|
||||||
|
"runtChance": 10,
|
||||||
|
"primeChance": 5,
|
||||||
|
"weightMin": 2.5,
|
||||||
|
"weightMax": 3.5,
|
||||||
|
"weightRunt": 1.5,
|
||||||
|
"weightFat": 5,
|
||||||
|
"activeChannel": "##xmopx"
|
||||||
|
}
|
|
@ -1,15 +0,0 @@
|
||||||
delayMin: 5
|
|
||||||
delayMax: 15
|
|
||||||
missChance: 50
|
|
||||||
animal: "\\_o< Quack!"
|
|
||||||
animalSpecies: "Duck"
|
|
||||||
animalSpeciesPlural: "Ducks"
|
|
||||||
animalNameMale: "Duck"
|
|
||||||
animalNameFemale: "Duck"
|
|
||||||
runtChance: 10
|
|
||||||
primeChance: 5
|
|
||||||
weightMin: 2.5
|
|
||||||
weightMax: 3.5
|
|
||||||
weightRunt: 1.5
|
|
||||||
weightFat: 5.0
|
|
||||||
activeChannel: "#xmopx"
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"channelWhitelistOn": true,
|
||||||
|
"channelWhitelist": [
|
||||||
|
"test"
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,3 +0,0 @@
|
||||||
channelWhitelistOn: True
|
|
||||||
channelWhitelist:
|
|
||||||
- test
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"limit": 25,
|
||||||
|
"recv_msg": "Oh, thanks, I'll keep %(adjective)s%(item)s safe",
|
||||||
|
"inv_msg": "\u0000\u0001ACTION is carrying %(itemlist)s\u0000\u0001",
|
||||||
|
"swap_msg": "\u0000\u0001ACTION takes %(adjective)s%(recv_item)s but drops %(drop_item)s\u0000\u0010",
|
||||||
|
"dupe_msg": "No thanks, I've already got %(item)s",
|
||||||
|
"adjectives": [
|
||||||
|
"some",
|
||||||
|
"the",
|
||||||
|
"an",
|
||||||
|
"these"
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,10 +0,0 @@
|
||||||
limit: 25
|
|
||||||
recv_msg: "Oh, thanks, I'll keep %(adjective)s%(item)s safe"
|
|
||||||
inv_msg: "\x01ACTION is carrying %(itemlist)s\x01"
|
|
||||||
swap_msg: "\x01ACTION takes %(adjective)s%(recv_item)s but drops %(drop_item)s\x10"
|
|
||||||
dupe_msg: "No thanks, I've already got %(item)s"
|
|
||||||
adjectives:
|
|
||||||
- some
|
|
||||||
- the
|
|
||||||
- an
|
|
||||||
- these
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"host": "localhost",
|
||||||
|
"username": "root",
|
||||||
|
"password": "root",
|
||||||
|
"database": "pyircbot"
|
||||||
|
}
|
|
@ -1,4 +0,0 @@
|
||||||
host: 10.0.3.14
|
|
||||||
username: root
|
|
||||||
password: root
|
|
||||||
database: pyircbot_dev
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"cache": 90
|
||||||
|
}
|
|
@ -1 +0,0 @@
|
||||||
cache: 90
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"limit": 10000
|
||||||
|
}
|
|
@ -1 +0,0 @@
|
||||||
limit: 10000
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"mytimezone": "US/Pacific",
|
||||||
|
"precision": 5
|
||||||
|
}
|
|
@ -1,2 +0,0 @@
|
||||||
mytimezone: US/Pacific
|
|
||||||
precision: 5
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"hintDelay": 15,
|
||||||
|
"delayNext": 5,
|
||||||
|
"maxHints": 5,
|
||||||
|
"abortAfterNoGuesses": 5
|
||||||
|
}
|
|
@ -1,4 +0,0 @@
|
||||||
hintDelay: 15
|
|
||||||
delayNext: 5
|
|
||||||
maxHints: 5
|
|
||||||
abortAfterNoGuesses: 5
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"timezone": "EST",
|
||||||
|
"add_hours": 0
|
||||||
|
}
|
|
@ -1,2 +0,0 @@
|
||||||
timezone: EST
|
|
||||||
add_hours: 0
|
|
|
@ -19,7 +19,7 @@
|
||||||
"ghost_cmd":"ghost %(nick)s %(password)s"
|
"ghost_cmd":"ghost %(nick)s %(password)s"
|
||||||
},
|
},
|
||||||
"channels":[
|
"channels":[
|
||||||
"#xmopx"
|
"##xmopx"
|
||||||
],
|
],
|
||||||
"privatechannels":{
|
"privatechannels":{
|
||||||
"to":"chanserv",
|
"to":"chanserv",
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"max": 10,
|
||||||
|
"maxage": 2678400
|
||||||
|
}
|
|
@ -1,2 +0,0 @@
|
||||||
max: 10
|
|
||||||
maxage: 2678400
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"apikey": "get an API key at: http://www.wunderground.com/weather/api/ (choose 'anvil')",
|
||||||
|
"defaultUnit": "c"
|
||||||
|
}
|
|
@ -1,2 +0,0 @@
|
||||||
apikey: "get an API key at: http://www.wunderground.com/weather/api/ (choose \"anvil\")"
|
|
||||||
defaultUnit: c
|
|
|
@ -0,0 +1,313 @@
|
||||||
|
Air
|
||||||
|
Stone
|
||||||
|
Grass
|
||||||
|
Dirt
|
||||||
|
Cobblestone
|
||||||
|
Wooden Plank
|
||||||
|
Sapling
|
||||||
|
Redwood Sapling
|
||||||
|
Birch Sapling
|
||||||
|
Bedrock
|
||||||
|
Water
|
||||||
|
Lava
|
||||||
|
Sand
|
||||||
|
Gravel
|
||||||
|
Gold Ore
|
||||||
|
Iron Ore
|
||||||
|
Coal Ore
|
||||||
|
Wood
|
||||||
|
Redwood
|
||||||
|
Birchwood
|
||||||
|
Leaves
|
||||||
|
Redwood Leaves
|
||||||
|
Birchwood Leaves
|
||||||
|
Sponge
|
||||||
|
Glass
|
||||||
|
Lapis Lazuli Ore
|
||||||
|
Lapis Lazuli Block
|
||||||
|
Dispenser
|
||||||
|
Sandstone
|
||||||
|
Note Block
|
||||||
|
Bed Block
|
||||||
|
Powered Rail
|
||||||
|
Detector Rail
|
||||||
|
Sticky Piston
|
||||||
|
Web
|
||||||
|
Dead Shrub
|
||||||
|
Tall Grass
|
||||||
|
Live Shrub
|
||||||
|
Dead Shrub
|
||||||
|
Piston
|
||||||
|
Piston Head
|
||||||
|
White Wool
|
||||||
|
Orange Wool
|
||||||
|
Magenta Wool
|
||||||
|
Light Blue Wool
|
||||||
|
Yellow Wool
|
||||||
|
Light Green Wool
|
||||||
|
Pink Wool
|
||||||
|
Gray Wool
|
||||||
|
Light Gray Wool
|
||||||
|
Cyan Wool
|
||||||
|
Purple Wool
|
||||||
|
Blue Wool
|
||||||
|
Brown Wool
|
||||||
|
Dark Green Wool
|
||||||
|
Red Wool
|
||||||
|
Black Wool
|
||||||
|
Dandelion
|
||||||
|
Rose
|
||||||
|
Brown Mushroom
|
||||||
|
Red Mushroom
|
||||||
|
Gold Block
|
||||||
|
Iron Block
|
||||||
|
Double Stone Slab
|
||||||
|
Double Sandstone Slab
|
||||||
|
Double Wooden Slab
|
||||||
|
Double Cobblestone Slab
|
||||||
|
Double Brick Slab
|
||||||
|
Double Stone Brick Slab
|
||||||
|
Stone Slab
|
||||||
|
Sandstone Slab
|
||||||
|
Wooden Slab
|
||||||
|
Cobblestone Slab
|
||||||
|
Brick Slab
|
||||||
|
Stone Brick Slab
|
||||||
|
Brick
|
||||||
|
TNT
|
||||||
|
Bookshelf
|
||||||
|
Mossy Cobblestone
|
||||||
|
Obsidian
|
||||||
|
Torch
|
||||||
|
Fire
|
||||||
|
Monster Spawner
|
||||||
|
Wooden Stairs
|
||||||
|
Chest
|
||||||
|
Redstone Wire
|
||||||
|
Diamond Ore
|
||||||
|
Diamond Block
|
||||||
|
Workbench
|
||||||
|
Wheat Crops
|
||||||
|
Soil
|
||||||
|
Furnace
|
||||||
|
Sign Post
|
||||||
|
Wooden Door
|
||||||
|
Ladder
|
||||||
|
Rails
|
||||||
|
Cobblestone Stairs
|
||||||
|
Wall Sign
|
||||||
|
Lever
|
||||||
|
Stone Pressure Plate
|
||||||
|
Iron Door Block
|
||||||
|
Wooden Pressure Plate
|
||||||
|
Redstone Ore
|
||||||
|
Redstone Torch
|
||||||
|
Stone Button
|
||||||
|
Snow
|
||||||
|
Ice
|
||||||
|
Snow Block
|
||||||
|
Cactus
|
||||||
|
Clay
|
||||||
|
Sugar Cane
|
||||||
|
Jukebox
|
||||||
|
Fence
|
||||||
|
Pumpkin
|
||||||
|
Netherrack
|
||||||
|
Soul Sand
|
||||||
|
Glowstone
|
||||||
|
Portal
|
||||||
|
Jack-O-Lantern
|
||||||
|
Cake Block
|
||||||
|
Redstone Repeater Block
|
||||||
|
Locked Chest
|
||||||
|
Trapdoor
|
||||||
|
Stone (Silverfish)
|
||||||
|
Stone Brick
|
||||||
|
Mossy Stone Brick
|
||||||
|
Cracked Stone Brick
|
||||||
|
Red Mushroom Cap
|
||||||
|
Brown Mushroom Cap
|
||||||
|
Iron Bars
|
||||||
|
Glass Pane
|
||||||
|
Melon Block
|
||||||
|
Pumpkin Stem
|
||||||
|
Melon Stem
|
||||||
|
Vines
|
||||||
|
Fence Gate
|
||||||
|
Brick Stairs
|
||||||
|
Stone Brick Stairs
|
||||||
|
Mycelium
|
||||||
|
Lily Pad
|
||||||
|
Nether Brick
|
||||||
|
Nether Brick Fence
|
||||||
|
Nether Brick Stairs
|
||||||
|
Nether Wart
|
||||||
|
Iron Shovel
|
||||||
|
Iron Pickaxe
|
||||||
|
Iron Axe
|
||||||
|
Flint and Steel
|
||||||
|
Apple
|
||||||
|
Bow
|
||||||
|
Arrow
|
||||||
|
Coal
|
||||||
|
Charcoal
|
||||||
|
Diamond
|
||||||
|
Iron Ingot
|
||||||
|
Gold Ingot
|
||||||
|
Iron Sword
|
||||||
|
Wooden Sword
|
||||||
|
Wooden Shovel
|
||||||
|
Wooden Pickaxe
|
||||||
|
Wooden Axe
|
||||||
|
Stone Sword
|
||||||
|
Stone Shovel
|
||||||
|
Stone Pickaxe
|
||||||
|
Stone Axe
|
||||||
|
Diamond Sword
|
||||||
|
Diamond Shovel
|
||||||
|
Diamond Pickaxe
|
||||||
|
Diamond Axe
|
||||||
|
Stick
|
||||||
|
Bowl
|
||||||
|
Mushroom Soup
|
||||||
|
Gold Sword
|
||||||
|
Gold Shovel
|
||||||
|
Gold Pickaxe
|
||||||
|
Gold Axe
|
||||||
|
String
|
||||||
|
Feather
|
||||||
|
Sulphur
|
||||||
|
Wooden Hoe
|
||||||
|
Stone Hoe
|
||||||
|
Iron Hoe
|
||||||
|
Diamond Hoe
|
||||||
|
Gold Hoe
|
||||||
|
Wheat Seeds
|
||||||
|
Wheat
|
||||||
|
Bread
|
||||||
|
Leather Helmet
|
||||||
|
Leather Chestplate
|
||||||
|
Leather Leggings
|
||||||
|
Leather Boots
|
||||||
|
Chainmail Helmet
|
||||||
|
Chainmail Chestplate
|
||||||
|
Chainmail Leggings
|
||||||
|
Chainmail Boots
|
||||||
|
Iron Helmet
|
||||||
|
Iron Chestplate
|
||||||
|
Iron Leggings
|
||||||
|
Iron Boots
|
||||||
|
Diamond Helmet
|
||||||
|
Diamond Chestplate
|
||||||
|
Diamond Leggings
|
||||||
|
Diamond Boots
|
||||||
|
Gold Helmet
|
||||||
|
Gold Chestplate
|
||||||
|
Gold Leggings
|
||||||
|
Gold Boots
|
||||||
|
Flint
|
||||||
|
Raw Porkchop
|
||||||
|
Cooked Porkchop
|
||||||
|
Painting
|
||||||
|
Golden Apple
|
||||||
|
Sign
|
||||||
|
Wooden Door
|
||||||
|
Bucket
|
||||||
|
Water Bucket
|
||||||
|
Lava Bucket
|
||||||
|
Minecart
|
||||||
|
Saddle
|
||||||
|
Iron Door
|
||||||
|
Redstone
|
||||||
|
Snowball
|
||||||
|
Boat
|
||||||
|
Leather
|
||||||
|
Milk Bucket
|
||||||
|
Clay Brick
|
||||||
|
Clay Balls
|
||||||
|
Sugarcane
|
||||||
|
Paper
|
||||||
|
Book
|
||||||
|
Slimeball
|
||||||
|
Storage Minecart
|
||||||
|
Powered Minecart
|
||||||
|
Egg
|
||||||
|
Compass
|
||||||
|
Fishing Rod
|
||||||
|
Clock
|
||||||
|
Glowstone Dust
|
||||||
|
Raw Fish
|
||||||
|
Cooked Fish
|
||||||
|
Ink Sack
|
||||||
|
Rose Red
|
||||||
|
Cactus Green
|
||||||
|
Coco Beans
|
||||||
|
Lapis Lazuli
|
||||||
|
Purple Dye
|
||||||
|
Cyan Dye
|
||||||
|
Light Gray Dye
|
||||||
|
Gray Dye
|
||||||
|
Pink Dye
|
||||||
|
Lime Dye
|
||||||
|
Dandelion Yellow
|
||||||
|
Light Blue Dye
|
||||||
|
Magenta Dye
|
||||||
|
Orange Dye
|
||||||
|
Bone Meal
|
||||||
|
Bone
|
||||||
|
Sugar
|
||||||
|
Cake
|
||||||
|
Bed
|
||||||
|
Redstone Repeater
|
||||||
|
Cookie
|
||||||
|
Map
|
||||||
|
Shears
|
||||||
|
Melon
|
||||||
|
Pumpkin Seeds
|
||||||
|
Melon Seeds
|
||||||
|
Raw Beef
|
||||||
|
Steak
|
||||||
|
Raw Chicken
|
||||||
|
Cooked Chicken
|
||||||
|
Rotten Flesh
|
||||||
|
Ender Pearl
|
||||||
|
Blaze Rod
|
||||||
|
Ghast Tear
|
||||||
|
Gold Nugget
|
||||||
|
Nether Wart Seeds
|
||||||
|
Potion
|
||||||
|
Glass Bottle
|
||||||
|
Spider Eye
|
||||||
|
Fermented Spider Eye
|
||||||
|
Blaze Powder
|
||||||
|
Magma Cream
|
||||||
|
Gold Music Disc
|
||||||
|
Green Music Disc
|
||||||
|
Chicken
|
||||||
|
Cow
|
||||||
|
Mooshroom
|
||||||
|
Ocelot
|
||||||
|
Pig
|
||||||
|
Sheep
|
||||||
|
Squid
|
||||||
|
Villager
|
||||||
|
Enderman
|
||||||
|
Wolf
|
||||||
|
Zombie Pigman
|
||||||
|
Wolf
|
||||||
|
Ocelot
|
||||||
|
Blaze
|
||||||
|
Cave Spider
|
||||||
|
Creeper
|
||||||
|
Ghast
|
||||||
|
Magma Cube
|
||||||
|
Silverfish
|
||||||
|
Skeleton
|
||||||
|
Slime
|
||||||
|
Spider
|
||||||
|
Spider Jockey
|
||||||
|
Zombie
|
||||||
|
Snow Golem
|
||||||
|
Iron Golem
|
||||||
|
Ender Dragon
|
||||||
|
Rana
|
|
@ -34,7 +34,7 @@ class ModuleBase:
|
||||||
here"""
|
here"""
|
||||||
|
|
||||||
self.config={}
|
self.config={}
|
||||||
"""Configuration dictionary. Autoloaded from `%(datadir)s/%(modulename)s.yml`"""
|
"""Configuration dictionary. Autoloaded from `%(datadir)s/%(modulename)s.json`"""
|
||||||
|
|
||||||
self.log = logging.getLogger("Module.%s" % self.moduleName)
|
self.log = logging.getLogger("Module.%s" % self.moduleName)
|
||||||
"""Logger object for this module"""
|
"""Logger object for this module"""
|
||||||
|
@ -57,7 +57,7 @@ class ModuleBase:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def getConfigPath(self):
|
def getConfigPath(self):
|
||||||
"""Returns the absolute path of this module's YML config file"""
|
"""Returns the absolute path of this module's json config file"""
|
||||||
return self.bot.getConfigPath(self.moduleName)
|
return self.bot.getConfigPath(self.moduleName)
|
||||||
|
|
||||||
def getFilePath(self, f=None):
|
def getFilePath(self, f=None):
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from pyircbot.modulebase import ModuleBase,ModuleHook
|
from pyircbot.modulebase import ModuleBase,ModuleHook
|
||||||
import yaml
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
from threading import Timer
|
from threading import Timer
|
||||||
|
@ -18,7 +17,6 @@ class CardsAgainstHumanity(ModuleBase):
|
||||||
# init the base module
|
# init the base module
|
||||||
ModuleBase.__init__(self, bot, moduleName);
|
ModuleBase.__init__(self, bot, moduleName);
|
||||||
self.hooks=[ModuleHook("PRIVMSG", self.scramble)]
|
self.hooks=[ModuleHook("PRIVMSG", self.scramble)]
|
||||||
self.loadConfig()
|
|
||||||
|
|
||||||
# Dictionary
|
# Dictionary
|
||||||
self.whitesFile = open(self.getFilePath("answers.txt"),'r')
|
self.whitesFile = open(self.getFilePath("answers.txt"),'r')
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
from pyircbot.modulebase import ModuleBase,ModuleHook
|
from pyircbot.modulebase import ModuleBase,ModuleHook
|
||||||
import random
|
import random
|
||||||
import yaml
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import math
|
import math
|
||||||
|
|
|
@ -19,11 +19,11 @@ class DogeRPC(ModuleBase):
|
||||||
self.rpc = DogeController(self)
|
self.rpc = DogeController(self)
|
||||||
|
|
||||||
def getBal(self, acct):
|
def getBal(self, acct):
|
||||||
" get a balance of an address or an account "
|
"Get a balance of a local address or an account "
|
||||||
return self.getAcctBal(acct)
|
return self.getAcctBal(acct)
|
||||||
|
|
||||||
def getAcctAddr(self, acct):
|
def getAcctAddr(self, acct):
|
||||||
" returns the address for an account. creates if necessary "
|
"Returns the address for an account. creates if necessary "
|
||||||
self.rpc.ping()
|
self.rpc.ping()
|
||||||
addrs = self.rpc.con.getaddressesbyaccount(acct)
|
addrs = self.rpc.con.getaddressesbyaccount(acct)
|
||||||
if len(addrs)==0:
|
if len(addrs)==0:
|
||||||
|
@ -31,30 +31,31 @@ class DogeRPC(ModuleBase):
|
||||||
return addrs[0]
|
return addrs[0]
|
||||||
|
|
||||||
def getAcctBal(self, acct):
|
def getAcctBal(self, acct):
|
||||||
" returns an account's balance"
|
"Returns an account's balance"
|
||||||
self.rpc.ping()
|
self.rpc.ping()
|
||||||
return float(self.rpc.con.getbalance(acct))
|
return float(self.rpc.con.getbalance(acct))
|
||||||
|
|
||||||
def canMove(self, fromAcct, toAcct, amount):
|
def canMove(self, fromAcct, toAcct, amount):
|
||||||
" true or false if fromAcct can afford to give toAcct an amount of coins "
|
"True or false if fromAcct can afford to give toAcct an amount of coins "
|
||||||
balfrom = self.getAcctBal(fromAcct)
|
balfrom = self.getAcctBal(fromAcct)
|
||||||
return balfrom >= amount
|
return balfrom >= amount
|
||||||
|
|
||||||
def move(self, fromAcct, toAcct, amount):
|
def move(self, fromAcct, toAcct, amount):
|
||||||
" move coins from one account to another "
|
"Move coins from one account to another "
|
||||||
self.rpc.ping()
|
self.rpc.ping()
|
||||||
if self.canMove(fromAcct, toAcct, amount):
|
if self.canMove(fromAcct, toAcct, amount):
|
||||||
return self.rpc.con.move(fromAcct, toAcct, amount)
|
return self.rpc.con.move(fromAcct, toAcct, amount)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def send(self, fromAcct, toAddr, amount):
|
def send(self, fromAcct, toAddr, amount):
|
||||||
" send coins to an external addr "
|
"Send coins to an external addr "
|
||||||
self.rpc.ping()
|
self.rpc.ping()
|
||||||
if self.canMove(fromAcct, toAddr, amount):
|
if self.canMove(fromAcct, toAddr, amount):
|
||||||
return self.rpc.con.sendfrom(fromAcct, toAddr, amount)
|
return self.rpc.con.sendfrom(fromAcct, toAddr, amount)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
class DogeController:
|
class DogeController:
|
||||||
|
"RPC instance control class"
|
||||||
def __init__(self, master):
|
def __init__(self, master):
|
||||||
self.config = master.config
|
self.config = master.config
|
||||||
self.log = master.log
|
self.log = master.log
|
||||||
|
@ -62,12 +63,14 @@ class DogeController:
|
||||||
self.ping()
|
self.ping()
|
||||||
|
|
||||||
def ping(self):
|
def ping(self):
|
||||||
|
"Test connection and re-establish if necessary"
|
||||||
try:
|
try:
|
||||||
self.con.getinfo()
|
self.con.getinfo()
|
||||||
except:
|
except:
|
||||||
self.connect()
|
self.connect()
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
|
"Connect to RPC endpoint"
|
||||||
self.log.debug("DogeRPC: Connecting to dogecoind")
|
self.log.debug("DogeRPC: Connecting to dogecoind")
|
||||||
self.con = AuthServiceProxy("http://%s:%s@%s:%s" % (self.config["username"], self.config["password"], self.config["host"], self.config["port"]))
|
self.con = AuthServiceProxy("http://%s:%s@%s:%s" % (self.config["username"], self.config["password"], self.config["host"], self.config["port"]))
|
||||||
self.con.getinfo()
|
self.con.getinfo()
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
from pyircbot.modulebase import ModuleBase,ModuleHook
|
from pyircbot.modulebase import ModuleBase,ModuleHook
|
||||||
import random
|
import random
|
||||||
import yaml
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
from threading import Timer
|
from threading import Timer
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
from pyircbot.modulebase import ModuleBase,ModuleHook
|
from pyircbot.modulebase import ModuleBase,ModuleHook
|
||||||
import time
|
import time
|
||||||
import yaml
|
import json
|
||||||
import random
|
import random
|
||||||
from threading import Timer
|
from threading import Timer
|
||||||
import os
|
import os
|
||||||
|
@ -20,7 +20,7 @@ class DuckHunt(ModuleBase):
|
||||||
self.hooks=[ModuleHook("PRIVMSG", self.hunt)]
|
self.hooks=[ModuleHook("PRIVMSG", self.hunt)]
|
||||||
self.loadConfig()
|
self.loadConfig()
|
||||||
|
|
||||||
self.ymlPath = self.getFilePath("scores.yml")
|
self.jsonPath = self.getFilePath("scores.json")
|
||||||
|
|
||||||
self.timer = None
|
self.timer = None
|
||||||
self.isDuckOut = False
|
self.isDuckOut = False
|
||||||
|
@ -125,7 +125,7 @@ class DuckHunt(ModuleBase):
|
||||||
|
|
||||||
|
|
||||||
def startHunt(self):
|
def startHunt(self):
|
||||||
" Creates a timer that waits a certain amount of time then sends out a bird \_o< quack"
|
" Creates a timer that waits a certain amount of time then sends out a bird \\_o< quack"
|
||||||
delay = self.config["delayMin"] + random.randint(0, self.config["delayMax"]-self.config["delayMin"])
|
delay = self.config["delayMin"] + random.randint(0, self.config["delayMax"]-self.config["delayMin"])
|
||||||
self.timer = Timer(delay, self.duckOut)
|
self.timer = Timer(delay, self.duckOut)
|
||||||
self.timer.start()
|
self.timer.start()
|
||||||
|
@ -157,12 +157,12 @@ class DuckHunt(ModuleBase):
|
||||||
self.saveScores(scores)
|
self.saveScores(scores)
|
||||||
|
|
||||||
def loadScores(self):
|
def loadScores(self):
|
||||||
if not os.path.exists(self.ymlPath):
|
if not os.path.exists(self.jsonPath):
|
||||||
yaml.dump({}, open(self.ymlPath, 'w'))
|
json.dump({}, open(self.jsonPath, 'w'))
|
||||||
return yaml.load(open(self.ymlPath, 'r'))
|
return json.load(open(self.jsonPath, 'r'))
|
||||||
|
|
||||||
def saveScores(self, scores):
|
def saveScores(self, scores):
|
||||||
yaml.dump(scores, open(self.ymlPath, 'w'))
|
json.dump(scores, open(self.jsonPath, 'w'))
|
||||||
|
|
||||||
def ondisable(self):
|
def ondisable(self):
|
||||||
self.timer.cancel()
|
self.timer.cancel()
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
from pyircbot.modulebase import ModuleBase,ModuleHook
|
from pyircbot.modulebase import ModuleBase,ModuleHook
|
||||||
import random
|
import random
|
||||||
import yaml
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
from threading import Timer
|
from threading import Timer
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
from pyircbot.modulebase import ModuleBase,ModuleHook
|
from pyircbot.modulebase import ModuleBase,ModuleHook
|
||||||
import random
|
import random
|
||||||
import yaml
|
import json
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
from threading import Timer
|
from threading import Timer
|
||||||
|
@ -34,14 +34,14 @@ class Scramble(ModuleBase):
|
||||||
wordsF.close
|
wordsF.close
|
||||||
self.log.info("Scramble: Loaded %s words" % str(self.wordsCount))
|
self.log.info("Scramble: Loaded %s words" % str(self.wordsCount))
|
||||||
# Load scores
|
# Load scores
|
||||||
self.scoresFile = self.getFilePath("scores.yml")
|
self.scoresFile = self.getFilePath("scores.json")
|
||||||
if not os.path.exists(self.scoresFile):
|
if not os.path.exists(self.scoresFile):
|
||||||
yaml.dump({}, file(self.scoresFile, 'w'))
|
json.dump({}, open(self.scoresFile, 'w'))
|
||||||
self.scores = yaml.load(file(self.scoresFile, 'r'))
|
self.scores = json.load(open(self.scoresFile, 'r'))
|
||||||
# Per channel games
|
# Per channel games
|
||||||
self.games = {}
|
self.games = {}
|
||||||
# Hook in
|
# Hook in
|
||||||
self.hooks=[ModuleBase.ModuleHook("PRIVMSG", self.scramble)]
|
self.hooks=[ModuleHook("PRIVMSG", self.scramble)]
|
||||||
|
|
||||||
def scramble(self, args, prefix, trailing):
|
def scramble(self, args, prefix, trailing):
|
||||||
channel = args[0]
|
channel = args[0]
|
||||||
|
@ -51,7 +51,7 @@ class Scramble(ModuleBase):
|
||||||
self.games[channel].scramble(args, prefix, trailing)
|
self.games[channel].scramble(args, prefix, trailing)
|
||||||
|
|
||||||
def saveScores(self):
|
def saveScores(self):
|
||||||
yaml.dump(self.scores, file(self.scoresFile, 'w'))
|
json.dump(self.scores, open(self.scoresFile, 'w'))
|
||||||
|
|
||||||
def getScore(self, player, add=0):
|
def getScore(self, player, add=0):
|
||||||
player = player.lower()
|
player = player.lower()
|
||||||
|
@ -93,7 +93,7 @@ class scrambleGame:
|
||||||
self.hintsGiven = 0
|
self.hintsGiven = 0
|
||||||
# Cooldown between words
|
# Cooldown between words
|
||||||
self.nextTimer = None
|
self.nextTimer = None
|
||||||
# How many guesses submitted this round
|
# How many gamesWithoutGuesses submitted this round
|
||||||
self.guesses = 0;
|
self.guesses = 0;
|
||||||
# How many games in a row where nobody guessed
|
# How many games in a row where nobody guessed
|
||||||
self.gamesWithoutGuesses = 0;
|
self.gamesWithoutGuesses = 0;
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
"""
|
||||||
|
.. module:: Test
|
||||||
|
:synopsis: For testing code
|
||||||
|
|
||||||
|
.. moduleauthor:: Dave Pedu <dave@davepedu.com>
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from pyircbot.modulebase import ModuleBase,ModuleHook
|
||||||
|
|
||||||
|
class Test(ModuleBase):
|
||||||
|
def __init__(self, bot, moduleName):
|
||||||
|
ModuleBase.__init__(self, bot, moduleName)
|
||||||
|
self.hooks=[ModuleHook("PRIVMSG", self.dotest)]
|
||||||
|
|
||||||
|
def dotest(self, args):
|
||||||
|
print("DOTEST(%s)"%(args,))
|
|
@ -301,9 +301,7 @@ class PyIRCBot:
|
||||||
|
|
||||||
basepath = "%s/config/%s" % (self.botconfig["bot"]["datadir"], moduleName)
|
basepath = "%s/config/%s" % (self.botconfig["bot"]["datadir"], moduleName)
|
||||||
|
|
||||||
if os.path.exists("%s.yml"%basepath):
|
if os.path.exists("%s.json"%basepath):
|
||||||
return "%s.yml"%basepath
|
|
||||||
elif os.path.exists("%s.json"%basepath):
|
|
||||||
return "%s.json"%basepath
|
return "%s.json"%basepath
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -360,15 +358,12 @@ class PyIRCBot:
|
||||||
def load(filepath):
|
def load(filepath):
|
||||||
"""Return an object from the passed filepath
|
"""Return an object from the passed filepath
|
||||||
|
|
||||||
:param filepath: path to a file of json or yaml format. filename must end with .json or .yml
|
:param filepath: path to a json file. filename must end with .json
|
||||||
:type filepath: str
|
:type filepath: str
|
||||||
:Returns: | dict
|
:Returns: | dict
|
||||||
"""
|
"""
|
||||||
if filepath.endswith(".yml"):
|
|
||||||
from yaml import load
|
|
||||||
return load(open(filepath, 'r'))
|
|
||||||
|
|
||||||
elif filepath.endswith(".json"):
|
if filepath.endswith(".json"):
|
||||||
from json import load
|
from json import load
|
||||||
return load(open(filepath, 'r'))
|
return load(open(filepath, 'r'))
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue