initial commit
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
# Add any directories, files, or patterns you don't want to be tracked by version control
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
import asyncio
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
from sympy import latex, symbols, preview, Symbol #for LaTeX images
|
||||||
|
|
||||||
|
class General(object):
|
||||||
|
"""Overal toegestaan."""
|
||||||
|
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.bot = bot
|
||||||
|
self.voice_states = {}
|
||||||
|
def __check(self, ctx): #Todo: Is dit het porno kanaal?
|
||||||
|
return True
|
||||||
|
@commands.command(pass_context=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def tex(self, ctx, mathstring):
|
||||||
|
"""Geeft een mooi LaTeX plaatje terug.
|
||||||
|
Encapsuleer uw string in mooie \"
|
||||||
|
Bijvoorbeeld:
|
||||||
|
!tex "a^b b^c \rightarrow d"
|
||||||
|
"""
|
||||||
|
preamble = "\\documentclass[10pt]{article}\\pagestyle{empty}\\usepackage[margin=1in]{geometry}\\usepackage[T1]{fontenc}\\usepackage{CJKutf8}\\usepackage[english]{babel}\\usepackage{amsmath, amsfonts}\\begin{document}"
|
||||||
|
options = ["-T", "tight", "-z", "9", "--truecolor", "-D", "512"]
|
||||||
|
preview(r'$$'+mathstring+'$$', viewer='file', filename='test.png', dvioptions=options, preamble=preamble)
|
||||||
|
file = open('test.png', 'rb')
|
||||||
|
yield from self.bot.upload(file, filename ='test.png', content='Nerd!')
|
||||||
|
|
||||||
@@ -0,0 +1,240 @@
|
|||||||
|
import asyncio
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
|
||||||
|
class VoiceEntry:
|
||||||
|
def __init__(self, message, player):
|
||||||
|
self.requester = message.author
|
||||||
|
self.channel = message.channel
|
||||||
|
self.player = player
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
fmt = '*{0.title}* verzocht door {1.display_name}'
|
||||||
|
duration = self.player.duration
|
||||||
|
if duration:
|
||||||
|
fmt = fmt + ' [{0[0]}m {0[1]}s]'.format(divmod(duration, 60))
|
||||||
|
return fmt.format(self.player, self.requester)
|
||||||
|
|
||||||
|
class VoiceState:
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.current = None
|
||||||
|
self.voice = None
|
||||||
|
self.bot = bot
|
||||||
|
self.play_next_song = asyncio.Event()
|
||||||
|
self.songs = asyncio.Queue()
|
||||||
|
self.skip_votes = set() # a set of user_ids that voted
|
||||||
|
self.audio_player = self.bot.loop.create_task(self.audio_player_task())
|
||||||
|
|
||||||
|
def is_playing(self):
|
||||||
|
if self.voice is None or self.current is None:
|
||||||
|
return False
|
||||||
|
|
||||||
|
player = self.current.player
|
||||||
|
return not player.is_done()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def player(self):
|
||||||
|
return self.current.player
|
||||||
|
|
||||||
|
def skip(self):
|
||||||
|
self.skip_votes.clear()
|
||||||
|
if self.is_playing():
|
||||||
|
self.player.stop()
|
||||||
|
|
||||||
|
def toggle_next(self):
|
||||||
|
self.bot.loop.call_soon_threadsafe(self.play_next_song.set)
|
||||||
|
|
||||||
|
@asyncio.coroutine
|
||||||
|
def audio_player_task(self):
|
||||||
|
while True:
|
||||||
|
self.play_next_song.clear()
|
||||||
|
self.current = yield from self.songs.get()
|
||||||
|
yield from self.bot.send_message(self.current.channel, 'U luistert naar: ' + str(self.current))
|
||||||
|
self.current.player.start()
|
||||||
|
yield from self.play_next_song.wait()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if not discord.opus.is_loaded():
|
||||||
|
# the 'opus' library here is opus.dll on windows
|
||||||
|
# or libopus.so on linux in the current directory
|
||||||
|
# you should replace this with the location the
|
||||||
|
# opus library is located in and with the proper filename.
|
||||||
|
# note that on windows this DLL is automatically provided for you
|
||||||
|
discord.opus.load_opus('opus')
|
||||||
|
|
||||||
|
class Music:
|
||||||
|
"""Play that funky music white boy.
|
||||||
|
"""
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.bot = bot
|
||||||
|
self.voice_states = {}
|
||||||
|
|
||||||
|
def __check(self, ctx):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def get_voice_state(self, server):
|
||||||
|
state = self.voice_states.get(server.id)
|
||||||
|
if state is None:
|
||||||
|
state = VoiceState(self.bot)
|
||||||
|
self.voice_states[server.id] = state
|
||||||
|
|
||||||
|
return state
|
||||||
|
@asyncio.coroutine
|
||||||
|
def create_voice_client(self, channel):
|
||||||
|
voice = yield from self.bot.join_voice_channel(channel)
|
||||||
|
state = self.get_voice_state(channel.server)
|
||||||
|
state.voice = voice
|
||||||
|
|
||||||
|
def __unload(self):
|
||||||
|
for state in self.voice_states.values():
|
||||||
|
try:
|
||||||
|
state.audio_player.cancel()
|
||||||
|
if state.voice:
|
||||||
|
self.bot.loop.create_task(state.voice.disconnect())
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, no_pm=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def join(self, ctx, *, channel : discord.Channel):
|
||||||
|
"""Verplaats stroopie naar een bepaald kanaal."""
|
||||||
|
try:
|
||||||
|
yield from self.create_voice_client(channel)
|
||||||
|
except discord.ClientException:
|
||||||
|
yield from self.bot.say('Already in a voice channel...')
|
||||||
|
except discord.InvalidArgument:
|
||||||
|
yield from self.bot.say('This is not a voice channel...')
|
||||||
|
else:
|
||||||
|
yield from self.bot.say('Ready to play audio in ' + channel.name)
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, no_pm=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def summon(self, ctx):
|
||||||
|
"""Roep stroopie naar jouw kanaal toe.."""
|
||||||
|
summoned_channel = ctx.message.author.voice_channel
|
||||||
|
if summoned_channel is None:
|
||||||
|
yield from self.bot.say('You are not in a voice channel.')
|
||||||
|
return False
|
||||||
|
|
||||||
|
state = self.get_voice_state(ctx.message.server)
|
||||||
|
if state.voice is None:
|
||||||
|
state.voice = yield from self.bot.join_voice_channel(summoned_channel)
|
||||||
|
else:
|
||||||
|
yield from state.voice.move_to(summoned_channel)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, no_pm=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def play(self, ctx, *, song : str):
|
||||||
|
"""Zet een liedje in de queue
|
||||||
|
"""
|
||||||
|
state = self.get_voice_state(ctx.message.server)
|
||||||
|
opts = {
|
||||||
|
'default_search': 'auto',
|
||||||
|
'quiet': True,
|
||||||
|
'no-check-certificate': True,
|
||||||
|
}
|
||||||
|
|
||||||
|
if state.voice is None:
|
||||||
|
success = yield from ctx.invoke(self.summon)
|
||||||
|
if not success:
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
player = yield from state.voice.create_ytdl_player(song, ytdl_options=opts, after=state.toggle_next)
|
||||||
|
except Exception as e:
|
||||||
|
fmt = 'Error: ```py\n{}: {}\n```'
|
||||||
|
yield from self.bot.send_message(ctx.message.channel, fmt.format(type(e).__name__, e))
|
||||||
|
else:
|
||||||
|
player.volume = 0.6
|
||||||
|
entry = VoiceEntry(ctx.message, player)
|
||||||
|
yield from self.bot.say('In de queue: ' + str(entry))
|
||||||
|
yield from state.songs.put(entry)
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, no_pm=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def volume(self, ctx, value : int):
|
||||||
|
"""zet het volume. 1-100"""
|
||||||
|
|
||||||
|
state = self.get_voice_state(ctx.message.server)
|
||||||
|
if state.is_playing():
|
||||||
|
player = state.player
|
||||||
|
player.volume = value / 100
|
||||||
|
yield from self.bot.say('Zet het volume op {:.0%}'.format(player.volume))
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, no_pm=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def pause(self, ctx):
|
||||||
|
"""Pauzeer het huidige liedje"""
|
||||||
|
state = self.get_voice_state(ctx.message.server)
|
||||||
|
if state.is_playing():
|
||||||
|
player = state.player
|
||||||
|
player.pause()
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, no_pm=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def resume(self, ctx):
|
||||||
|
"""onpauzeer."""
|
||||||
|
state = self.get_voice_state(ctx.message.server)
|
||||||
|
if state.is_playing():
|
||||||
|
player = state.player
|
||||||
|
player.resume()
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, no_pm=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def stop(self, ctx):
|
||||||
|
"""Kappen nou. Stoppen met spelen, gaat uit het kanaal en leegt de queue.
|
||||||
|
"""
|
||||||
|
server = ctx.message.server
|
||||||
|
state = self.get_voice_state(server)
|
||||||
|
|
||||||
|
if state.is_playing():
|
||||||
|
player = state.player
|
||||||
|
player.stop()
|
||||||
|
|
||||||
|
try:
|
||||||
|
state.audio_player.cancel()
|
||||||
|
del self.voice_states[server.id]
|
||||||
|
yield from state.voice.disconnect()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, no_pm=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def skip(self, ctx):
|
||||||
|
"""skipperdepip
|
||||||
|
"""
|
||||||
|
|
||||||
|
state = self.get_voice_state(ctx.message.server)
|
||||||
|
if not state.is_playing():
|
||||||
|
yield from self.bot.say('Not playing any music right now...')
|
||||||
|
return
|
||||||
|
|
||||||
|
voter = ctx.message.author
|
||||||
|
if voter == state.current.requester:
|
||||||
|
yield from self.bot.say('Requester requested skipping song...')
|
||||||
|
state.skip()
|
||||||
|
elif voter.id not in state.skip_votes:
|
||||||
|
state.skip_votes.add(voter.id)
|
||||||
|
total_votes = len(state.skip_votes)
|
||||||
|
if total_votes >= 3:
|
||||||
|
yield from self.bot.say('Skip vote passed, skipping song...')
|
||||||
|
state.skip()
|
||||||
|
else:
|
||||||
|
yield from self.bot.say('Skip vote added, currently at [{}/3]'.format(total_votes))
|
||||||
|
else:
|
||||||
|
yield from self.bot.say('You have already voted to skip this song.')
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, no_pm=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def playing(self, ctx):
|
||||||
|
"""Info over het huidige liedje."""
|
||||||
|
|
||||||
|
state = self.get_voice_state(ctx.message.server)
|
||||||
|
if state.current is None:
|
||||||
|
yield from self.bot.say('Not playing anything.')
|
||||||
|
else:
|
||||||
|
skip_count = len(state.skip_votes)
|
||||||
|
yield from self.bot.say('Now playing {} [skips: {}/3]'.format(state.current, skip_count))
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
import asyncio
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
import os
|
||||||
|
from random import randint
|
||||||
|
|
||||||
|
class Porno(object):
|
||||||
|
"""Porno commando's. Jij weet wat er aan is."""
|
||||||
|
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.bot = bot
|
||||||
|
self.voice_states = {}
|
||||||
|
self.fileIndex = {}
|
||||||
|
def __check(self, ctx): #Todo: Is dit het porno kanaal?
|
||||||
|
return True
|
||||||
|
|
||||||
|
def randomJpgFromFolder(self, dir):
|
||||||
|
if dir not in self.fileIndex.keys():
|
||||||
|
self.fileIndex[dir] = [] #empty list
|
||||||
|
for dirname, dirnames, filenames in os.walk('./'+ dir):
|
||||||
|
for filename in filenames:
|
||||||
|
if filename.endswith('.jpg'):
|
||||||
|
self.fileIndex[dir].append(os.path.join(dirname, filename))
|
||||||
|
#now we should have an index for the selected folder, but it might still be empty (i.e. empty folder given)
|
||||||
|
if self.fileIndex[dir]:
|
||||||
|
return self.fileIndex[dir][randint(0,len(self.fileIndex[dir])-1)] #get a random element from the newly created index
|
||||||
|
else:
|
||||||
|
return 'default file here'
|
||||||
|
|
||||||
|
@commands.command(pass_context=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def ancilla(self, ctx):
|
||||||
|
""" :-) """
|
||||||
|
filepath = self.randomJpgFromFolder('ancilla');
|
||||||
|
file = open(filepath, 'rb')
|
||||||
|
yield from self.bot.upload(file, filename = filepath, content='Alsjeblieft!')
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# README #
|
||||||
|
|
||||||
|
This README would normally document whatever steps are necessary to get your application up and running.
|
||||||
|
|
||||||
|
### What is this repository for? ###
|
||||||
|
|
||||||
|
* Quick summary
|
||||||
|
* Version
|
||||||
|
* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
|
||||||
|
|
||||||
|
### How do I get set up? ###
|
||||||
|
|
||||||
|
* Summary of set up
|
||||||
|
* Configuration
|
||||||
|
* Dependencies
|
||||||
|
* Database configuration
|
||||||
|
* How to run tests
|
||||||
|
* Deployment instructions
|
||||||
|
|
||||||
|
### Contribution guidelines ###
|
||||||
|
|
||||||
|
* Writing tests
|
||||||
|
* Code review
|
||||||
|
* Other guidelines
|
||||||
|
|
||||||
|
### Who do I talk to? ###
|
||||||
|
|
||||||
|
* Repo owner or admin
|
||||||
|
* Other community or team contact
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
import asyncio
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
from urllib import request
|
||||||
|
import json, requests
|
||||||
|
from datetime import datetime
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
class Shitpost(object):
|
||||||
|
"""Schijtpaal commando's. Alleen bruikbaar in de daarvoor toegewezen schijtpaal kanalen."""
|
||||||
|
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.bot = bot
|
||||||
|
self.voice_states = {}
|
||||||
|
def __check(self, ctx): #Todo: Is dit het shitpost kanaal?
|
||||||
|
return True
|
||||||
|
|
||||||
|
@commands.command(pass_context=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def eriku(self, ctx, boven: str, onder: str):
|
||||||
|
"""Maakt een erik meem.
|
||||||
|
Bijvoorbeeld:
|
||||||
|
@Stroopwafel eriku \"je moeder\" \"is een hoer\"
|
||||||
|
"""
|
||||||
|
params = dict(
|
||||||
|
template_id = '93296473', #de eriku
|
||||||
|
username = 'Stroopwafel',
|
||||||
|
password = 'ruyter118',
|
||||||
|
text0 = boven,
|
||||||
|
text1 = onder
|
||||||
|
)
|
||||||
|
self.bot.say("deed ik het ding?")
|
||||||
|
resp = requests.get(url='https://api.imgflip.com/caption_image', params=params)
|
||||||
|
#todo check for success
|
||||||
|
photourl = resp.json()['data']['url']
|
||||||
|
em = discord.Embed(title='De Eriku heeft gesproken. Prijs hem!', type='photo')
|
||||||
|
em.set_image(url=photourl)
|
||||||
|
yield from self.bot.say(embed=em)
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, hidden=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def nihao(self,ctx):
|
||||||
|
yield from self.bot.say("Kankerlauw")
|
||||||
|
|
||||||
|
@commands.command(pass_context=True)
|
||||||
|
@asyncio.coroutine
|
||||||
|
def tijd(self, ctx, *args):
|
||||||
|
"""Vertelt je hoe laat het is..
|
||||||
|
Misschien geeft het ook wel een leuke meem terug.
|
||||||
|
Wie weet.
|
||||||
|
Probeer het eens op verschillende tijdstippen
|
||||||
|
"""
|
||||||
|
|
||||||
|
time=datetime.now().strftime('%H%M')
|
||||||
|
for argument in args:
|
||||||
|
time = argument
|
||||||
|
filepath = ''
|
||||||
|
#filejpg = './tijd/' + time + '.jpg'
|
||||||
|
#filepng = './tijd/' + time + '.png'
|
||||||
|
filejpg = os.path.join('tijd', time) + '.jpg'
|
||||||
|
filepng = os.path.join('tijd', time) + '.png'
|
||||||
|
if os.path.isfile(filejpg):
|
||||||
|
filepath = filejpg
|
||||||
|
elif os.path.isfile(filepng):
|
||||||
|
filepath = filepng
|
||||||
|
|
||||||
|
if filepath is not '':
|
||||||
|
file = open(filepath, 'rb')
|
||||||
|
yield from self.bot.upload(file, filename = filepath)
|
||||||
|
else:
|
||||||
|
yield from self.bot.say('Het is nu ' + datetime.now().strftime('%H:%M'))
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
import asyncio
|
||||||
|
import discord
|
||||||
|
import Music
|
||||||
|
import Porno
|
||||||
|
import Shitpost
|
||||||
|
import General
|
||||||
|
from discord.ext import commands
|
||||||
|
|
||||||
|
bot = commands.Bot(command_prefix=commands.when_mentioned_or('!'), description='Stroopwafel. Shitpost bot extraordinaire.', pm_help=True)
|
||||||
|
bot.add_cog(Music.Music(bot))
|
||||||
|
bot.add_cog(Shitpost.Shitpost(bot))
|
||||||
|
bot.add_cog(Porno.Porno(bot))
|
||||||
|
bot.add_cog(General.General(bot))
|
||||||
|
|
||||||
|
@bot.event
|
||||||
|
@asyncio.coroutine
|
||||||
|
def on_ready():
|
||||||
|
print('Logged in as:\n{0} (ID: {0.id})'.format(bot.user))
|
||||||
|
|
||||||
|
bot.run('MjczODc1ODM1NzIxNzQ0Mzg1.C2p7EA._tTMtYEsaUuTv_RtOifGhNX9QZ4')
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<ProjectGuid>6f25512f-caba-45b1-9b6a-d2d28b32494a</ProjectGuid>
|
||||||
|
<ProjectHome>.</ProjectHome>
|
||||||
|
<StartupFile>Stroopwafel.py</StartupFile>
|
||||||
|
<SearchPath>
|
||||||
|
</SearchPath>
|
||||||
|
<WorkingDirectory>.</WorkingDirectory>
|
||||||
|
<OutputPath>.</OutputPath>
|
||||||
|
<Name>Stroopwafel</Name>
|
||||||
|
<RootNamespace>Stroopwafel</RootNamespace>
|
||||||
|
<IsWindowsApplication>False</IsWindowsApplication>
|
||||||
|
<InterpreterId>{257fd04c-048c-4bcb-bc47-024b035ececc}</InterpreterId>
|
||||||
|
<InterpreterVersion>3.5</InterpreterVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="General.py">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Porno.py">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Shitpost.py">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Stroopwafel.py" />
|
||||||
|
<Compile Include="Music.py">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<InterpreterReference Include="{257fd04c-048c-4bcb-bc47-024b035ececc}\3.5" />
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||||
|
<PtvsTargetsFile>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Python Tools\Microsoft.PythonTools.targets</PtvsTargetsFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Condition="Exists($(PtvsTargetsFile))" Project="$(PtvsTargetsFile)" />
|
||||||
|
<Import Condition="!Exists($(PtvsTargetsFile))" Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
|
||||||
|
<!-- Uncomment the CoreCompile target to enable the Build command in
|
||||||
|
Visual Studio and specify your pre- and post-build commands in
|
||||||
|
the BeforeBuild and AfterBuild targets below. -->
|
||||||
|
<!--<Target Name="CoreCompile" />-->
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 14
|
||||||
|
VisualStudioVersion = 14.0.25420.1
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "Stroopwafel", "Stroopwafel.pyproj", "{6F25512F-CABA-45B1-9B6A-D2D28B32494A}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{6F25512F-CABA-45B1-9B6A-D2D28B32494A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{6F25512F-CABA-45B1-9B6A-D2D28B32494A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 63 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 63 KiB |
Reference in New Issue
Block a user