diff --git a/presentation/.gitignore b/presentation/.gitignore new file mode 100644 index 0000000..38bfa46 --- /dev/null +++ b/presentation/.gitignore @@ -0,0 +1,24 @@ +*.aux +*.glo +*.idx +*.log +*.toc +*.ist +*.acn +*.acr +*.alg +*.bbl +*.blg +*.dvi +*.glg +*.gls +*.ilg +*.ind +*.lof +*.lot +*.maf +*.mtc +*.mtc1 +*.out +*.synctex.gz + diff --git a/presentation/main.nav b/presentation/main.nav new file mode 100644 index 0000000..625f5c6 --- /dev/null +++ b/presentation/main.nav @@ -0,0 +1,43 @@ +\beamer@endinputifotherversion {3.36pt} +\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}} +\headcommand {\beamer@framepages {1}{1}} +\headcommand {\sectionentry {1}{Introduction}{2}{Introduction}{0}} +\headcommand {\beamer@sectionpages {1}{1}} +\headcommand {\beamer@subsectionpages {1}{1}} +\headcommand {\slideentry {1}{0}{1}{2/2}{}{0}} +\headcommand {\beamer@framepages {2}{2}} +\headcommand {\slideentry {1}{0}{2}{3/3}{}{0}} +\headcommand {\beamer@framepages {3}{3}} +\headcommand {\slideentry {1}{0}{3}{4/4}{}{0}} +\headcommand {\beamer@framepages {4}{4}} +\headcommand {\sectionentry {2}{Project Info}{5}{Project Info}{0}} +\headcommand {\beamer@sectionpages {2}{4}} +\headcommand {\beamer@subsectionpages {2}{4}} +\headcommand {\slideentry {2}{0}{1}{5/5}{}{0}} +\headcommand {\beamer@framepages {5}{5}} +\headcommand {\slideentry {2}{0}{2}{6/6}{}{0}} +\headcommand {\beamer@framepages {6}{6}} +\headcommand {\slideentry {2}{0}{3}{7/7}{}{0}} +\headcommand {\beamer@framepages {7}{7}} +\headcommand {\sectionentry {3}{Grading}{8}{Grading}{0}} +\headcommand {\beamer@sectionpages {5}{7}} +\headcommand {\beamer@subsectionpages {5}{7}} +\headcommand {\slideentry {3}{0}{1}{8/8}{}{0}} +\headcommand {\beamer@framepages {8}{8}} +\headcommand {\slideentry {3}{0}{2}{9/9}{}{0}} +\headcommand {\beamer@framepages {9}{9}} +\headcommand {\slideentry {3}{0}{3}{10/10}{}{0}} +\headcommand {\beamer@framepages {10}{10}} +\headcommand {\slideentry {3}{0}{4}{11/11}{}{0}} +\headcommand {\beamer@framepages {11}{11}} +\headcommand {\slideentry {3}{0}{5}{12/12}{}{0}} +\headcommand {\beamer@framepages {12}{12}} +\headcommand {\slideentry {3}{0}{6}{13/13}{}{0}} +\headcommand {\beamer@framepages {13}{13}} +\headcommand {\slideentry {3}{0}{7}{14/14}{}{0}} +\headcommand {\beamer@framepages {14}{14}} +\headcommand {\beamer@partpages {1}{14}} +\headcommand {\beamer@subsectionpages {8}{14}} +\headcommand {\beamer@sectionpages {8}{14}} +\headcommand {\beamer@documentpages {14}} +\headcommand {\def \inserttotalframenumber {10}} diff --git a/presentation/main.pdf b/presentation/main.pdf new file mode 100644 index 0000000..4a7a2f6 Binary files /dev/null and b/presentation/main.pdf differ diff --git a/presentation/main.snm b/presentation/main.snm new file mode 100644 index 0000000..e69de29 diff --git a/presentation/main.tex b/presentation/main.tex new file mode 100644 index 0000000..3832241 --- /dev/null +++ b/presentation/main.tex @@ -0,0 +1,161 @@ +% !TeX program = xelatex +% !TeX encoding = UTF-8 +\documentclass{beamer} + +%------------------------------------------------------- +\usetheme[background=dark, progressbar=foot]{metropolis} +\title{Discord Chat Bot} +\subtitle{Asynchronous PHP} +\date{May 2, 2017} +\author{Benjamin Hamilton Harris} +\institute{Northern Michigan University} + +\usepackage{multicol} + + +\begin{document} + +\maketitle + + +\section{Introduction} + +\begin{frame}{Discord} + Discord Chat Client + \begin{itemize} + \item Marketed towards gamers + \item Rich text chat + \item Silky smooth voice chat + \end{itemize} + +\end{frame} + + +\begin{frame}{Discord API} + Discord exposes a REST-ful HTTP API + \begin{itemize} + \item Raw HTTP requests are cumbersome + \item Many wrapper libraries available + \item JavaScript, Python most popular + \end{itemize} + +\end{frame} + + +\section{Project Info} + +\begin{frame}{Technology Stack} + Technologies + \begin{itemize} + \item PHP 7 + \item DiscordPHP API wrapper library + \item ReactPHP Promises for Async + \item Composer + \end{itemize} + +\end{frame} + + +\begin{frame}{Project Background} + Proposal + \begin{itemize} + \item Started as passion project + \item General purpose chat bot + \item Rapidly growing feature set + \end{itemize} + +\end{frame} + + +\section{Grading} + +\begin{frame}{Possible Points} + \begin{multicols}{2} + \begin{itemize} + \item Get User Info [1 pts] + \item Get Profile Photo for arbitrary User [1 pts] + \item Get Server Info [2 pts] + \item Display Bot Status/Uptime [1 pts] + \item Send direct message to any user [1 pts] + \item Permissions for commands based on user's permissions [2 pts] + \item Talk to Cleverbot [3 pts] + \item Save images and retrieve them later [5 pts] + \item Save text and retrieve it later [2 pts] + \item Send me a text message [2 pts] + \item Send emails to a saved address for a user [2 pts] + \end{itemize} + \end{multicols} + +\end{frame} + + +\begin{frame}{Possible Points, cont.} + \begin{multicols}{2} + \begin{itemize} + \item Internet lookups + \begin{enumerate}[--] + \item Weather for any city [3 pts] + \item Time for any city [3 pts] + \item Save a preferred city for each user for time and weather [2 pts] + \item Look up a random joke [2 pts] + \item \textbf{Send an image from Google Images [5 pts]} + \item Stream music from YouTube to voice channel [10 pts] + \end{enumerate} + \item Create and vote on polls [5 pts] + \item Chat games (TicTacToe, Hangman) [10 pts] + \item Text transform (emojis, unicode fonts, and ASCII art) [3 pts] + \item Roll an n-sided die [1 pts] + \item 8-Ball style fortunes [2 pts] + \end{itemize} + \end{multicols} + +\end{frame} + + +\begin{frame} + \begin{center} + \Large\textbf{Demo Time!} + \end{center} +\end{frame} + + +\begin{frame}{Grading Scale} + + 63+ $\rightarrow$ \textbf{A} + + 56+ $\rightarrow$ B + + 49+ $\rightarrow$ C + + 42+ $\rightarrow$ D + + 35+ $\rightarrow$ F + + \textbf{65/70 possible points from proposal achieved} + +\end{frame} + + + +\begin{frame}{Possible Extra Points} + Things I've done that might be worth more points! + \begin{itemize} + \item Edit and delete messages in the chat + \item Run a command line process and return stdout as a message + \item Evaluate arbitrary PHP code and return the results to the chat + \end{itemize} + \footnotesize I am the only user allowed to evaluate arbitrary code. + +\end{frame} + + + +\begin{frame} + \begin{center} + \Large\textbf{Any Questions?} + \end{center} +\end{frame} + + + +\end{document}